合計したいdata.tableにsomデータがあります。簡単な例を以下に示します。私は(可変)n列(char)といくつかのグループ変数から始めます。r data.table - n個の列から要約された列を作成するための文字列を使用
これは私の例ではnsk-varsを数値/整数に変換することができます。私は列の文字列を使用して、これらの合計(nsk1-nsk3)とNAを処理する新しい列を作成したいと考えています。どのように私はこれを共鳴することができますか?
library(data.table)
x <- data.table(a = c("GrpA", "GrpB"),
nsk1 = c("1","3"),
nsk2 = c(NA,"1"),
nsk3 = c("3", "4"))
ClNamesStr <- colnames(x)
ClNamesStr <- ClNamesStr[grepl("^nsk", ClNamesStr)]
nskStrSum <- paste(ClNamesStr, collapse = "),as.numeric(")
nskStrSum <- paste("as.numeric(", nskStrSum, "), na.rm = TRUE")
これは私が働きたい部分です。
x[, nsk0 := sum(eval(nskStrSum)), by = a]
所望の出力は、これを次のようになります。
a nsk1 nsk2 nsk3 nsk0
GrpA 1 NA 3 4
GrpB 3 1 4 8
THXの@lmoで 'NA' を交換した後
Reduce
で試すことができます - 私はシンプルに自分の例を作ったかもしれません実現します。私はグループ変数ではありませんが、要約してはいけない他の列を持っています。 ofc、私はちょうど一緒にグループ化することもできますか? – ErrantBard行ごとに1組の変数を合計しようとしていますか?質問に希望の出力を含めてください。 – lmo
絶対に - 私はそれをプレーンテキストで書いても動作しますが、抽出されたcolnamesから和文の文字列を生成する必要があり、それは動作しない部分です – ErrantBard