2016-08-14 96 views
0

我想比較R中兩列的值。如果無損天數(dfd)大於或等於總天數列(TotalDays),那麼我想要替換達到年齡的dfy值(以天爲單位) - TotalDays。比較兩列並替換R中的值

我已經看到了關於這個問題的不同的問題,但目前爲止似乎沒有任何工作。如果有人能幫忙,我會很感激!什麼我想要實現

Example columns: 

dfy  TotalDays age  
7305.00 2872.21  10261 
2556.75 3001.43  10210 
3215.31 2941.87  12931 

例子: (DFY替換時代 - TotalDays)

dfy  TotalDays age 
7433.79 2872.21  10261 
2556.75 3001.43  10210 
9988.13 2941.87  12931 

重複性代碼:

df <- data.frame(dfy=c(7305.00,2556.75,3215.31), 
      TotalDays = c(2872.21, 3001.43, 2941.87), age = c(10261, 10210, 12931)) 

回答

3

我們可以創建一個邏輯vector和替換隻有'dfy'中那些對於vector爲TRUE的元素。

i1 <- with(df, TotalDays < dfy) 
df$dfy[i1] <- with(df, age[i1] - TotalDays[i1]) 

更快的選擇將是使用data.table通過代替分配(:=

library(data.table) 
setDT(df)[TotalDays < dfy, dfy := age - TotalDays]