我有数百个数据帧,具有以下结构:
df <- data.frame(yr=seq(0,20,1), op=c(0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,10))
我想自动替换列op
的初始部分,因为序列将从向量的末尾继续,但直到第二个0
值。
应该是这样的结果:
df.result <- data.frame(yr=seq(0,20,1), op=c(11,12,13,14,15,16,17,18,19,20,0,1,2,3,4,5,6,7,8,9,10))
它必须是动态的,因为序列都是不同的。 有关使用函数快速执行此操作而不需要循环的任何提示吗?
提前致谢!
答案 0 :(得分:3)
这是一种方法:
transform(df, op = replace(op, cumsum(!op) < 2, seq(which(!op)[2] - 1) + tail(op, 1)))