比较两列并替换R中的值

时间:2016-08-14 15:32:21

标签: r compare

我想比较R中两列的值。如果无损天数(dfd)大于或等于总天数列(TotalDays),那么我想将dfy值替换为Age(这是在天) - TotalDays。

我已经看到了不同的问题,但到目前为止似乎没有任何工作。如果有人能提供帮助我真的很感激!

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))

1 个答案:

答案 0 :(得分:3)

我们可以创建一个逻辑vector并仅替换'dfy'中那些vector为真的元素。

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]