2013-11-25 73 views
1

我有這樣一個數據幀:的R - 缺失值和邏輯運算

ID VarA VarB 
001 5  2 
002   4 
003 6 
004  
005 3  5 

VarAVarB之間創建一個第三可變VarC具有最高值:

ID VarA VarB VarC 
001 5  2  5 
002   4  4 
003 6    6 
004     
005 3  5  5 

我知道這一點非常簡單。我嘗試使用ifelse函數,但我只獲得當VarAVarB丟失VarC丟失。

我該如何解決問題?

謝謝。

回答

5

使用矢量pmax和設置na.rm爲TRUE:

with(myData,pmax(VarA,VarB,na.rm=TRUE)) 
1] 5 4 6 NA 5 
+0

美麗,謝謝 – corrado

1

你只需要使用?max和參數na.rm=TRUE

> myData <- read.table(text="ID VarA VarB 
+ 001 5  2 
+ 002 NA  4 
+ 003 6  NA 
+ 004 NA  NA 
+ 005 3  5", header=TRUE) 
> myData$VarC <- apply(X=myData[,-1], MARGIN=1, FUN=max, na.rm=TRUE) 
Warning message: 
In FUN(newX[, i], ...) : no non-missing arguments to max; returning -Inf 
> myData 
    ID VarA VarB VarC 
1 1 5 2 5 
2 2 NA 4 4 
3 3 6 NA 6 
4 4 NA NA -Inf 
5 5 3 5 5 

注意,4號線,因爲沒有不丟失數據拋出一個警告。如果需要,您可以用NA覆蓋-Inf