2012-07-30 60 views
1

我有以下的數據幀:řas.numeric在公式中

id<-c(1,2,3,4) 
x<-c(0,2,1,0) 
A<-c(1,3,4,3) 
df<-data.frame(id,x,A) 

現在我想使一個稱爲value變量的方式,如果x> 0,value每個id將等於A + 1/X,並且如果x = 0時,值將等於A. 與此目的我已經輸入

value <- df$A + as.numeric(df$x > 0)*(1/df$x) 

我所期望的載體的如下:

[1] 1 3.5 5.0 3 

但是我所得到通過鍵入上面的命令是:

[1] NaN 3.5 5.0 NaN 

我不知道是否有人能幫助我解決這個問題。 在此先感謝!

回答

4

我認爲這將是簡單的在這種情況下使用功能ifelse

ifelse(df$x>0, df$A + (1/df$x), df$A) 
[1] 1.0 3.5 5.0 3.0 

詳情請參閱?ifelse

並附上您嘗試應用的命令,雖然as.numeric(df$x>0)確實給你的1和0(所以這是一個好主意)的載體,它並沒有改變的事實,1/df$x是一個NaNdf$x等於爲0(因爲你不能被0除)。