通过从另一列R分组来标记列中的每个值

abb*_*786 1 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)
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*pov 5

您可以从包中替换"" NA并使用:na.locfzoo

library(zoo)
DT[Type=="",Type:=NA][,Type:=na.locf(Type)][!is.na(Cohort)]
Run Code Online (Sandbox Code Playgroud)