繁体   English   中英

比较两列并替换R中的值

[英]Compare two columns and replace value in R

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

我已经看到了与此有关的不同问题,但到目前为止似乎没有任何效果。 如果有人能帮助我,我将不胜感激!

Example columns:

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

我要实现的示例:(将dfy替换为age-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))

我们可以创建一个逻辑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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM