我想更新data.table中的某些列,但又不要太冗长。这是一个几乎可以满足我需要的示例:
DT <- data.table(A=1:4, B=3:6, C=rep(1,4), id = c(1,1,2,2))
DT[2,1] <- NA
DT[3,2] <- NA
DT[4,3] <- NA
cols_to_change <- c("A","B")
DT <- DT[,nafill(.SD, "locf"), by=id, .SDcols = cols_to_change]
唯一的问题是删除了列“ C”,并且更改了“ A”和“ B”的名称。实际上,我还有很多要更改的列,并且我想运行两个更新函数(locf和nocb),因此将它们全部列在cols_to_change
向量中而不是在每个更新函数中重复列出所有列是有意义的。我认为有某种方式可以解决:=
我不太了解的问题,或者可能是通过dyplrgroup_by
和mutate
函数实现的。无论如何,我愿意接受任何可行的方法。
我们需要:=
通过在中指定“ cols_to_change”(在lhs上)来更新列,()
以评估对象内的值,而不是按字面值对其进行评估
DT[,(cols_to_change) := nafill(.SD, "locf"), by=id, .SDcols = cols_to_change]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句