私はゼロの値を持つ複数の変数を持つdata.frameを持っています。私は、観測ごとにゼロでない変数の組み合わせを返す余分な変数を構築する必要があります。例えば。R data.frameに結合変数を作成する方法は?
df <- data.frame(firm = c("firm1", "firm2", "firm3", "firm4", "firm5"),
A = c(0, 0, 0, 1, 2),
B = c(0, 1, 0, 42, 0),
C = c(1, 1, 0, 0, 0))
今、私は新しい変数を生成したいと思います:
df$varCombination <- c("C", "B-C", NA, "A-B", "A")
私は明らかに動作しませんでした、このような何かを考えた:
for (i in 1:nrow(df)){
df$varCombination[i] <- paste(names(df[i,2:ncol(df) & > 0]), collapse = "-")
}
感謝を!これまで提案されているすべてのソリューションは美しく機能します。だから、あなたのバージョンを最善のものとして選ぶのは私の好みの問題です。それはNAの交換が欠けているが、それは障害物ではなかった。 – Antti
@Anttiそれだけでは味の問題ではありません。行方式の操作は、Rがvecotirzed言語であり、すべてが直感的である。最も遅いソリューションを選択しました。私の答えでいくつかのベンチマークを参照してください。ですから、あなたはその間に "* neatest *"を定義してください。 –
@DavidArenburgは、私は絶対にそれが行方向Rにループ高速なソリューションではありません同意するものとします。私の防衛では、私はループが何が起こっているかを少しはっきりさせると思うし、元のコードに近づけようとしていたので、ロジックが質問者にとってより簡単になるだろう。 –