【发布时间】:2018-07-31 10:08:23
【问题描述】:
# have
> aDT <- data.table(colA = c(1,1,1,1,2,2,2,2,3,3,3,3), colB = c(4,NA,NA,1,4,3,NA,NA,4,NA,2,NA))
> aDT
colA colB
1: 1 4
2: 1 NA
3: 1 NA
4: 1 1
5: 2 4
6: 2 3
7: 2 NA
8: 2 NA
9: 3 4
10: 3 NA
11: 3 2
12: 3 NA
# want
> bDT <- data.table(colA = c(1,1,1,1,2,2,2,2,3,3,3,3), colB = c(4,1,1,1,4,3,3,3,4,2,2,2))
> bDT
colA colB
1: 1 4
2: 1 1
3: 1 1
4: 1 1
5: 2 4
6: 2 3
7: 2 3
8: 2 3
9: 3 4
10: 3 2
11: 3 2
12: 3 2
希望根据以下算法填充缺失值: 在每个组内('colA'),
- 使用下面一行中的值,如果仍然是 NA,则一直持续到该组中的最后一行
- 如果所有 NA 都在下面的行中,请查看上面的行(一次向上 1 行)
- 如果所有 NA,则 NA
由于数据集相当大,算法效率是考虑的一部分。不确定是否已经有此类操作的任何包。怎么做?
【问题讨论】:
标签: r data.table row na