通过在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))


以上是通过在r中的多列上相加上一行的值来计算数字的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>