首页 > 解决方案 > 通过数据帧中的行计算总和

问题描述

我有一个关于 R 中通过行的负累积总和的问题,我怎样才能获得所需的输出:

# TEST
data <- data.frame(
  `Delivery Year` = c('1976','1977','1978','1979'),
  `Freq` = c(120,100,80,60),
  `Year.1976` = c(10,3,8,0),
  `Year.1977` = c(5,0,5,0),
  `Year.1978` = c(10,10,0,0),
  `Year.1979` = c(13,0,0,14)
)

data

# DESIRED
data <- data.frame(
  `Delivery Year` = c('1976','1977','1978','1979'),
  `Freq` = c(120,100,80,60),
  `Year.1` = c(110,97,72,60),
  `Year.2` = c(105,97,67,60),
  `Year.3` = c(95,87,67,60),
  `Year.4` = c(82,87,67,46)
)

data

在此处输入图像描述

标签: r

解决方案


一种使用dplyrand的解决方案purrr可能是:

data %>%
    mutate(pmap_dfr(across(-1), ~ accumulate(c(...), `-`)))

 Delivery.Year Freq Year.1 Year.2 Year.3 Year.4
1          1976  120    110    105     95     82
2          1977  100     97     97     87     87
3          1978   80     72     67     67     67
4          1979   60     60     60     60     46

base R

Reduce(`-`, data[-1], accumulate = TRUE)

推荐阅读