一定期間にわたって1人あたり複数の観測値を持つデータセットを変換しようとしています。例えば、この時間中、人1は肥満であり、肥満ではない(ちょうど太りすぎる)ことができる。ここでは、人1からの例です:グループ/ IDで特定の列の最大値に置き換えます。
ID Obese Overweight
1 NA NA
1 NA NA
1 0 1
1 1 0
1 0 0
2 NA 0
2 0 1
2 0 NA
I 1は(700 +がある指定された列数を越え、THAT列内のすべての表示された場合は、各列に「1」の値を交換する必要がある。例えば、 c(5:749))by "ID"。理想的には、出力は次のようになります。
ID Obese Overweight
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
2 0 1
2 0 1
2 0 1
まず、すべてのNAsを0に変更しました。私は、各列に沿って最大値を取って(IDで)置き換えることができると考えましたが、グループ(ID)と列(c(5:749) )。また、新しい列を作成するのではなく、データフレーム内にすでに存在する列内の値を置換するだけです。
私はループが長すぎる与えかかるだろうと思います。また
...それは単一の変数のために働くようになったが、変数のセットを通過するループにこれを変換できませんでした。データサイズその他の推奨事項はありますか?前もって感謝します。ここでは例のデータセットがあります:
dat <- as.data.frame(matrix(NA,18))
dat$id <- as.character(c(1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3))
dat$ob1 <- as.character(c(NA,NA,0,1,0,NA,0,1,0,0,0,0,0,0,0,0,0,0))
dat$ob2 <- as.character(c(NA,NA,1,0,0,NA,0,0,1,0,0,0,0,1,0,0,0,0))
dat <- dat[,-1]
は限りリンクとして「lapply」を使用してページング、与えられた個々のすべての値がNA(または0)の場合に動作するようには思えません。このシナリオでは、他の列(元のデータセットの列には現れなかった列)の値を「記入」/置き換えているようです。これは、バイナリ変数が連続値で代入/置換されたときにはっきりと検出されました。なぜこれが起こっているかもしれないのか?
は、コメントでより多くのオプションを見ることができます。 – Frank
このページをリンクありがとうございます。私が探しているもののようですが、まだエラーが発生しています。たとえば、特定の個体ですべての値がNAである列では、他の列(元のデータセットの列には現れなかった列)から始まる値を「記入」/置き換えているようです。これは、バイナリ変数が連続値で代入/置換されたときにはっきりと検出されました。なぜこれが起こっているかもしれないのか? – mgianfra
さて、あなたはそれを示す例を投稿することができますか?私は説明されている事実を本当に理解していません。 – Frank