我想比较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))
答案 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]