【问题标题】:Add row value to previous row value and add this to next row value in R将行值添加到前一行值并将其添加到 R 中的下一行值
【发布时间】:2019-10-07 14:57:11
【问题描述】:

我想创建一个新列,在其中将行值添加到前一个列中。例如,我想创建一个新列“lane_deviation_additive”,在其中添加lane_deviationROW1 + lane_deviationROW2,然后我想将lane_deviationROW3添加到该结果,然后将lane_deviationROW4添加到该结果等。

这是一个可重现的例子:

example <- structure(list(ppid_trialn = c("1_1_4", "1_1_4", "1_1_4", "1_1_4", 
"1_1_4", "1_1_4", "1_1_4", "1_1_4", "1_1_4", "1_1_4"), lane_deviation = c(0, 
0.000155266125100885, 0.000155489294201173, 0.000155766010066695, 
0.000155765951852893, 0.000155069487777508, 0.000154819918395414, 
0.000156239855052866, 0.000155319064160215, 0.00015709614437562
)), class = c("grouped_df", "tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-10L), groups = structure(list(ppid_trialn = "1_1_4", .rows = list(
    1:10)), row.names = c(NA, -1L), class = c("tbl_df", "tbl", 
"data.frame"), .drop = TRUE))

我觉得使用 dplyr 和 lag 函数可以做到这一点,但我不确定如何将下一行添加到添加前一行的结果中。任何帮助表示赞赏!

【问题讨论】:

  • 请显示给定示例的预期输出。
  • 也许你是这个意思? cumsum(example$lane_deviation) 听起来你正在寻找一列的累积和......
  • @MrFlick 是正确的。最初我想用... %&gt;% group_by(ppid_trialn) %&gt;% ... 发布一个更通用的解决方案,但我改变了主意,没有删除包:)

标签: r dplyr tidyr


【解决方案1】:

dplyr 的选项

library(dplyr)
example %>%
    mutate(lane_deviation_additive = cumsum(lane_deviation))

【讨论】:

    【解决方案2】:
     example[,"lane_deviation_additive"] <-cumsum(example$lane_deviation)
    

    【讨论】:

    • 仅代码的答案被认为是低质量的:请务必解释您的代码的作用以及它如何解决问题。
    猜你喜欢
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    • 2014-12-13
    • 1970-01-01
    • 2021-05-26
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多