如何用同一组中的其他值填充 NA

时间:2021-03-08 14:26:21

标签: r data.table

我有以下数据表:

data.table(group = c('A', 'B', 'B', 'A', 'B', 'B', 'A', 'A'), value = c(NA, 2, NA, 6, NA, 2, 6, NA))

   group value
1:     A    NA
2:     B     2
3:     B    NA
4:     A     6
5:     B    NA
6:     B     2
7:     A     6
8:     A    NA

我想将 NA 值填充为与非 NA 的组值相同。预期输出为:

   group value
1:     A     6
2:     B     2
3:     B     2
4:     A     6
5:     B     2
6:     B     2
7:     A     6
8:     A     6

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

这是一个使用 nafill 中的 data.tabletype = 'nocb'type = 'locf' 来前后传送值的解决方案。

library(data.table)

df <- data.table(group = c('A', 'B', 'B', 'A', 'B', 'B', 'A', 'A'), value = c(NA, 2, NA, 6, NA, 2, 6, NA))


df[ , value := nafill(nafill(value, type = 'nocb'), type = 'locf'), group]


Output:

group value
A     6
B     2
B     2
A     6
B     2
B     2
A     6
A     6

Original table:

group value
A     NA            
B     2         
B     NA            
A     6         
B     NA            
B     2         
A     6         
A     NA

reprex package (v0.3.0) 于 2021 年 3 月 8 日创建