我有以下数据表:
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
有什么建议吗?
答案 0 :(得分:2)
这是一个使用 nafill
中的 data.table
和 type = '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 日创建