【问题标题】:Replace values in a dataframe, until it matches a given value替换数据框中的值,直到它与给定值匹配
【发布时间】:2015-02-07 06:02:14
【问题描述】:

我有数百个具有以下结构的数据框:

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

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

提前致谢!

【问题讨论】:

  • 你的意思是给定一个数据框 d 和一个向量 v 你需要用 d 替换第一个 v.length 元素吗?
  • 我的意思是我需要将数据框第二列的第一个元素替换为其序列的延续,直到它达到第二个零。不涉及其他向量

标签: r replace dataframe subset


【解决方案1】:

这是一种方法:

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

【讨论】:

    猜你喜欢
    • 2019-06-21
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 2018-05-01
    • 2018-06-16
    • 2020-02-05
    • 1970-01-01
    • 2019-03-23
    相关资源
    最近更新 更多