gpt4 book ai didi

r - 分组为聚合值,但在 NA 上出错

转载 作者:行者123 更新时间:2023-12-02 18:21:50 26 4
gpt4 key购买 nike

我有很长的数据,我正在尝试创建一个新变量(一致),它是每个人(ID)在 TIME = 2 时给定列(VALUE)的值。我使用下面的代码这样做,但我被 NA 绊倒了。如果 TIME = 2 的 VALUE 为 NA,那么我希望它获取 TIME = 1 时的 VALUE。这部分我不知道该怎么做。因此,在下面的示例中,我希望新变量(一致)应该为 10 而不是 NA。

ID = c("A", "A", "B", "B", "C", "C", "D", "D")
TIME = c(1, 2, 1, 2, 1, 2, 1, 2)
VALUE = c(8, 9, 10, NA, 12, 13, 14, 9)

df = data.frame(ID, TIME, VALUE)

df <- df %>%
group_by(ID) %>%
mutate(consistent = VALUE[TIME == 2]) %>% ungroup

df

最佳答案

如果我们想使用相同的代码,则合并与“VALUE”,其中“TIME”为1(假设每个“ID”都有一个“TIME”观察)

library(dplyr)
df %>%
group_by(ID) %>%
mutate(consistent = coalesce(VALUE[TIME == 2], VALUE[TIME == 1])) %>%
ungroup

-输出

# A tibble: 8 × 4
ID TIME VALUE consistent
<chr> <dbl> <dbl> <dbl>
1 A 1 8 9
2 A 2 9 9
3 B 1 10 10
4 B 2 NA 10
5 C 1 12 13
6 C 2 13 13
7 D 1 14 9
8 D 2 9 9

或者另一种选择是在执行group_by之前排列并获取“VALUE”的第一个元素(假设没有复制“TIME”) ')

df %>%
arrange(ID, is.na(VALUE), desc(TIME)) %>%
group_by(ID) %>%
mutate(consistent = first(VALUE)) %>%
ungroup

-输出

# A tibble: 8 × 4
ID TIME VALUE consistent
<chr> <dbl> <dbl> <dbl>
1 A 2 9 9
2 A 1 8 9
3 B 1 10 10
4 B 2 NA 10
5 C 2 13 13
6 C 1 12 13
7 D 2 9 9
8 D 1 14 9

关于r - 分组为聚合值,但在 NA 上出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70777667/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com