我有一個看起來像這樣的稀疏數據表:計算上的多個列名在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