我有一个 data.table,如下:
library(data.table)
dt.tst <- CJ(Type = c("A", "B"),
Range_val = seq(0,20000, by = 1000))
dt.tst[Range_val == 2000 & Type == "A", Value := 0.987]
dt.tst[Range_val == 2000 & Type == "B", Value := 1.987]
dt.tst[Range_val == 9000 & Type == "A", Value := 1.056]
dt.tst[Range_val == 9000 & Type == "B", Value := 2.138]
dt.tst[Range_val == 16000 & Type == "A", Value := 1.563]
dt.tst[Range_val == 16000 & Type == "B", Value := 2.089]
我想填充Value列中的NA值:
- 根据Range_val和Type找到最接近的非na值
- 如果有多个值与目标相等,则选择Range_val最高的值(但这不是必须的,速度更重要)
我可以使用for循环来完成此操作,但速度较慢,我希望有一种更简洁,更快捷的方式。在data.table中如何实现?
始终会有非na值,但间隔可能不同。
nafill
目前仅支持 nocb 和 locf,因此这似乎是一个不错的功能请求。 - jangorecki