mam rzadki tabeli danych, który wygląda tak:Computing na wielu nazw kolumn w 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
Chciałbym dodać kolumnę, która zawiera ciąg zer i jedynek, które zmienne są wskazujący przedstawić w każdym rzędzie, tak:
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
mogę dostać się do tego za pomocą następującego polecenia:
data[, concat := paste(
as.integer(var1 != ""),
as.integer(var2 != ""),
as.integer(var3 != ""),
as.integer(var4 != ""),
sep = "|")]
Jednakże, jeśli mam setki zmiennych, wolę użyć jakiegoś obliczenia, aby uzyskać pożądane wyrażenie. Być może coś opartego na paste0("var",1:4)
lub przynajmniej wektor nazw kolumn. Jakieś sugestie?
Jestem naprawdę zaskoczony, że zapętlenie nad każdym rzędem jest szybsze niż "wklejanie" ich razem jako kolumn. Ale wydaje się, że tak jest, niezależnie od tego, co moim zdaniem powinno się stać! :-P – thelatemail