通过在r中的多列上相加上一行的值来计算数字
我有一个示例数据框,我想通过将多个列上的先前值相加来从中计算一个值。
我有一个数据框 df:
LK Loc1 Loc2 Loc3
1 13 22 0
2 20 18 4
3 12 21 2
4 2 0 1
5 1 2 0
我想进入一个新的数据框:
LK Loc1 Loc2 Loc3
1 13 22 0
2 33 40 4
3 45 61 6
4 47 61 7
5 48 63 7
我尝试了一些东西:
df2 <- df %>%
mutate_at(vars(-LK), accumulate(function(.) (.) * 0.99))
但我无法让它工作。
任何帮助表示赞赏。
先感谢您
回答
我们可以+在accumulate
library(dplyr)
library(purrr)
df %>%
mutate(across(-LK, ~ accumulate(., `+`)))
-输出
LK Loc1 Loc2 Loc3
1 1 13 22 0
2 2 33 40 4
3 3 45 61 6
4 4 47 61 7
5 5 48 63 7
如果我们想乘以 0.99
df %>%
mutate(across(-LK, ~ accumulate(., function(x, y)
x + y * 0.99)))
数据
df <- structure(list(LK = 1:5, Loc1 = c(13L, 20L, 12L, 2L, 1L),
Loc2 = c(22L,
18L, 21L, 0L, 2L), Loc3 = c(0L, 4L, 2L, 1L, 0L)),
class = "data.frame", row.names = c(NA,
-5L))