替换数据框中的值,直到它与给定值匹配

时间:2014-12-09 11:03:36

标签: r replace dataframe subset

我有数百个数据帧,具有以下结构:

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))

它必须是动态的,因为序列都是不同的。 有关使用函数快速执行此操作而不需要循环的任何提示吗?

提前致谢!

1 个答案:

答案 0 :(得分:3)

这是一种方法:

transform(df, op = replace(op, cumsum(!op) < 2, seq(which(!op)[2] - 1) + tail(op, 1)))