我有一个看起来像这样的稀疏数据表:计算上的多个列名在data.table
data = data.table(
var1 = c("a","",""),
var2 = c("","","c"),
var3 = c("a","b",""),
var4 = c("","b","")
)
var1 var2 var3 var4
1: a a
2: b b
3: c
我想补充一点,包含零和一的指示哪些变量是一弦一柱目前在任一行,就像这样:
var1 var2 var3 var4 concat
1: a a 1|0|1|0
2: b b 0|0|1|1
3: c 0|1|0|0
我能得到这个使用下面的命令:
data[, concat := paste(
as.integer(var1 != ""),
as.integer(var2 != ""),
as.integer(var3 != ""),
as.integer(var4 != ""),
sep = "|")]
但是,如果我有数百个变量,我宁愿使用某种计算来获得所需的表达式。可能是基于paste0("var",1:4)
的东西,或者至少是一个列名称向量。有什么建议么?
我真的很惊讶,循环播放每一行的速度都快于将它们粘贴为列。但无论我认为应该发生什么,似乎都是这种情况! :-P – thelatemail