ここにいくつかのサンプルデータがあります。
vv var1 var2
1 a 1/1/2010
1 c 1/3/2010
2 d 1/6/2010
3 a 1/8/2010
3 c 1/9/2010
4 a 1/10/2010
4 b 1/11/2010
5 d 1/13/2010
6 a 1/16/2010
6 b 1/17/2010
7 a 1/19/2010
7 b 1/20/2010
8 d 1/22/2010
9 a 1/25/2010
9 c 1/27/2010
他の変数からの応答によって設定された新しい変数を作成しようとしています。これは簡単だと思いました。たとえば、以下のようなことを試しました。
data$new1[data$var1=="a"]<-data$var2
#or
data$new1[data$var1=="b" | data$var1=="c"]<-data$var2
エラーが発生しますnumber of items to replace is not of replacement length
。私のデータでは、すべてvar1=="a"
がvar2
値を持っているわけではないので、r が欠損値に NA を割り当てるだけではない理由がわかりません。new1
基本的に、 r にNA 値を指定してもらいたいvar1!="a"
.
私も試しました
if (data$var1=="a") {data$new1<-data$var2} else {data$new1<-"NA"}
しかし、エラーが発生しますthe condition has length > 1 and only the first element will be used
。
ここで、データをサブセット化しvar1=="a"
、値を割り当ててから、NA の代入を取得するオプションを使用してメイン データ セットにマージすることができると思いall=T
ますが、これは本当に避けたいと思います。
何が問題なのかよくわかりません。アドバイスをいただければ幸いです。乾杯。
コードを実行するための以下のメソッドからの出力:
data$new1 <- ifelse(data$var1 %in% c("b","c"),data$var2,NA)
vv var1 var2 new1
1 1 a 1/1/2010 NA
2 1 c 1/3/2010 12
3 2 d 1/6/2010 NA
4 3 a 1/8/2010 NA
5 3 c 1/9/2010 15
6 4 a 1/10/2010 NA
7 4 b 1/11/2010 3
8 5 d 1/13/2010 NA
9 6 a 1/16/2010 NA
10 6 b 1/17/2010 6
11 7 a 1/19/2010 NA
12 7 b 1/20/2010 8
13 8 d 1/22/2010 NA
14 9 a 1/25/2010 NA
15 9 c 1/27/2010 11