通过从另一列R

时间:2016-06-03 22:41:10

标签: r data.table

我有一个不寻常的数据集,我需要使用它,我已经创建了一个小规模,可重现的例子。

library(data.table)
DT <- data.table(Type = c("A", rep("", 4), "B", rep("", 3), "C", rep("", 5)), Cohort = c(NA,1:4, NA, 5:7, NA, 8:12))
dt <- data.table(Type = c(rep("A", 4), rep("B", 3), rep("C", 5)), Cohort = 1:12)

我需要DT看起来像dt,实际数据集有680万行。我意识到这可能是一个简单的问题,但我似乎无法弄明白,也许setkey?感谢任何帮助。谢谢。

2 个答案:

答案 0 :(得分:5)

您可以NA替换“”并使用na.locf包中的zoo

library(zoo)
DT[Type=="",Type:=NA][,Type:=na.locf(Type)][!is.na(Cohort)]

答案 1 :(得分:0)

以下是不使用na.locf的其他选项。通过逻辑向量(Type!="")的累积总和进行分组,我们选择“群组”的第一个“类型”和lead值,将其分配(:=)到{{1 'DT'替换原始列值并使用names替换NA行。

na.omit