私は184のobsを持つデータフレームを持っていました。 5つの変数の:最初の値を見つけ、その結果に基づいて新しい変数を作成します
今私は発症状況を判断して、新たな変数(挑発)を作成したい:
'data.frame': 184 obs. of 5 variables:
$ Cat : Factor w/ 10 levels "99-001","99-002",..: 1 1 1 1 1 1 1 1 1 1 ...
$ No : int 1 1 1 1 1 1 1 1 1 1 ...
$ ehs : int 0 0 0 0 0 0 0 0 0 0 ...
$ Onset : int 0 0 0 0 0 0 0 9 9 9 ...
$ STARTING: Factor w/ 149 levels "1:37PM1","1:42PM1",..: 3 4 5 63 64 65 66 67...
データフレームを繰り返し測定の研究から来て、それは、それぞれのケースが複数回測定した意味それぞれの場合の開始が "0"の場合は、新しい変数(provoke)よりも "0"、それ以外の場合は "1"とコード化されます。
鉱山のRスクリプト:大型ケース番号については
no1 <- seq[seq$No == 1, ]
if (no1[1,4]==0) {no1$provoke =0} else {no1$provoke =1}
no2 <- seq[seq$No == 2, ]
if (no2[1,4]==0) {no2$provoke = 0} else {no2$provoke = 1}
は、私が仕事に
for (i in 1:10) {
noi <- seq[seq$No == i, ]
if (noi[1,4]==0) {
noi$provoke = 0}
else {noi$provoke = 1}
}
を完了するためにループを記述するつもりが、ループが機能していないようです。バグを見つけたり、間違いを指摘してもらえますか?
'noi 'はおそらく' no [i] 'で、' noi [1,4] 'はおそらく' no [i、4] 'でしょう。いずれにしても、これをコンソールに入力すると、ヘルプページを読むことができます。 '?\' [\ '' –
もちろん、forループを使用しないでください。ベクトル化されたソリューションははるかに高速です。 – Roland
は暗いところで(再現可能なデータなしで)撮影されましたが、ここでは解決策があります: 'df $ provoke < - sapply(1:nrow(df)、function(x)ifelse(df [x、" Onset " 0、1) ' –