【发布时间】:2018-12-01 03:15:49
【问题描述】:
当当前 'obs1' 列是 1 并且之前的 'obs1' 列是 0 每个 ID 时,是否有办法设置 cero 列 'result' 中的值,省略循环?
输入数据
df <- data.frame(ID = c(1,1,1,1,1,1,1,1,1,1, 2, 2),
obs1 = c(1,1,1,1,1,1,0,0,1,1,1,1),
obs2 = c(1,1,1,0,0,0,1,1,1,0,0,1),
result1 = c(0,28,63,84,105,135,150,150,150,59, 0,300),
result2 = c(0,28,63,63,63,63,63,31,59,59,0,0))
期望的输出:
df <- data.frame(ID = c(1,1,1,1,1,1,1,1,1,1,2,2),
obs1 = c(1,1,1,1,1,1,0,0,1,1,1,1),
obs2 = c(1,1,1,0,0,0,1,1,1,0,0,1),
result1 = c(0,28,63,84,105,135,150,150,0,59,0,300),
result2 = c(0,28,63,63,63,63,0,31,59,59,0,0))
第 6 行“result2”列和第 9 行“result1”列发生变化
【问题讨论】:
标签: r performance for-loop replace