这应该相当容易,但我只是让自己感到困惑。带数据框:
df <- data.frame(id = 1:5, rate1 = c(1, 0, 0.3, 0.5, 1)
, rate2 = c(0, 0.6, 1, 0, 1), cost1 = 3:7, cost2 = 8:4)
我想根据是否等于 1 添加一个新列,rate1
然后rate2
用最大值填充新列,cost1
否则cost2
使用 0。所需的结果将是:
id rate1 rate2 cost1 cost2 overspent
1 1 1.0 0.0 3 8 8
2 2 0.0 0.6 4 7 0
3 3 0.3 1.0 5 6 6
4 4 0.5 0.0 6 5 0
5 5 1.0 1.0 7 4 7
我假设使用类似于:
df$overspent <- with(df, ifelse((rate1 == 1 || rate2 == 1)
, apply(cbind(cost1, cost2), 1, max), 0))
但显然它不起作用。请纠正我。谢谢!