替换R中各组内的NA

w8f9ii69  于 2023-03-15  发布在  其他
关注(0)|答案(1)|浏览(137)

我有一个大数据集,如下所示:

Test = data.frame("ID" = c(rep(1,3), rep(2,4), rep(3,5)),
                  "Value" = c(NA, 1, NA, NA, 0.33, 0.33, 0.33, 0.5, NA, NA, 0.5, NA))

| 识别号|价值|
| - ------|- ------|
| 1个|不适用|
| 1个|1个|
| 1个|不适用|
| 第二章|不适用|
| 第二章|0.33|
| 第二章|0.33|
| 第二章|0.33|
| 三个|0.5分|
| 三个|不适用|
| 三个|不适用|
| 三个|0.5分|
| 三个|不适用|
每个ID都有NAs并且只有一个值,可以重复很多次。我希望每个组(group variable = ID)中的每个值都是非空值,在本例中,我期望得到以下结果:
| 识别号|价值|
| - ------|- ------|
| 1个|1个|
| 1个|1个|
| 1个|1个|
| 第二章|0.33|
| 第二章|0.33|
| 第二章|0.33|
| 第二章|0.33|
| 三个|0.5分|
| 三个|0.5分|
| 三个|0.5分|
| 三个|0.5分|
| 三个|0.5分|
我试过这样的方法:

Test %>% group_by(ID) %>% coalesce(Value, first(na.omit(Value)))

...但我收到错误:* 列表2中的错误(...):未找到对象'Value'*
有人能帮我吗?

yptwkmov

yptwkmov1#

我们可以使用tidyr包中的fill

library(tidyr)
library(dplyr)

Test %>% 
  group_by(ID) %>% 
  fill(Value, .direction = "updown")

      ID Value
   <dbl> <dbl>
 1     1  1   
 2     1  1   
 3     1  1   
 4     2  0.33
 5     2  0.33
 6     2  0.33
 7     2  0.33
 8     3  0.5 
 9     3  0.5 
10     3  0.5 
11     3  0.5 
12     3  0.5

相关问题