4

この質問は前の質問と似ています。

質問を伝えるために、このサンプルデータを提供しています。

id=c(1,2,3,4,5,6,7,8,9,10) 
var1=c(0,1,2,0,6,9,0,0,3,0) 
var2=c(0,0,2,3,0,0,0,5,0,0)
var3=c(0,1,4,3,6,9,0,5,3,0) 
data=data.frame(id,var1,var2, var3) 

必要なのは、の値の場合var1==var2はmakevar3==NAですが、そうでない場合はの値を保持しますvar3ifelseRの関数を使用してそれを実行できれば幸いですが、他のオプションも歓迎します。

質問が十分に明確であることを願っています。

よろしく、バゾン

4

2 に答える 2

1

これは、2つのベクトルにNAがない限り機能するはずです。

var3 <- ifelse(var1 == var2, NA, var3)
于 2010-09-24T01:25:07.540 に答える
1

ifelseで注意すべきことの1つは、状態がNAである可能性があるかどうかです。あなたの場合、Davidのサンプルコードを使用して、var1またはvar2のいずれかがNAの場合、var3はNAに設定されます。

この条件でNAをFに設定するか、次のようにします。

var3 <- replace(var3, which(var1 == var2), NA)

比較:

data$var1[1] = NA
with(data, ifelse(var1 == var2, NA, var3))
# [1] NA  1 NA  3  6  9 NA  5  3 NA
with(data, replace(var3, which(var1 == var2), NA))
# [1]  0  1 NA  3  6  9 NA  5  3 NA
于 2010-09-24T02:37:17.403 に答える