2010-09-24 25 views
4

此問題與上一個類似。如果兩列的值相等,則將結果列的值更改爲NA,並且如果不保留爲結果列的原始值 - 使用R

我在提供這個示例數據來獲得我的問題。

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值,然後進行var3==NA但如果他們不那麼保持var3值。 很高興在R中使用ifelse函數完成它,但歡迎使用其他選項。

我希望問題很清楚。

問候, Bazon

回答

1

有一件事要了解與ifelse是條件是否可能是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 
+0

嗨查爾斯,你是完全正確的。在應用了David的代碼之後,我進行了快速檢查,並且按照你所說的做了(如果var1或var2是NA,那麼var3將被設置爲NA),這並不是我想要的。我在那方面只是不清楚......我向你道歉大衛,謝謝你(查爾斯)的大力幫助! – baz 2010-09-24 03:46:03

1

這應該工作,只要沒有NA的兩個載體:

var3 <- ifelse(var1 == var2, NA, var3) 
+0

感謝大衛......它的工作! – baz 2010-09-24 01:39:47

+0

這是我使用的完整行:df $ var3 < - ifelse(df $ var1 == df $ var2,「NA」,df $ var3) – baz 2010-09-24 01:43:01

相關問題