【发布时间】: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 是正确的。最初我想用
... %>% group_by(ppid_trialn) %>% ...发布一个更通用的解决方案,但我改变了主意,没有删除包:)