ここにいくつかのサンプルデータがあります。
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