У меня есть разреженная таблица данных, которая выглядит следующим образом:вычисления на нескольких именах столбцов в 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