如何在 R 中创建 运行 总和摘要
How to create a running sum summary in R
我想从数据框 df
创建一个摘要报告,其中每一行都是基于列 B
的列 A
的累积总和(其中 C
是另一个 id 列)。以下是数据和输出:
set.seed(154)
df <- data.frame(B = append(append(rep(1,10),rep(2,10)),rep(3,10)),
C = rep(1:10,3),
A = sample(0:10,30,replace=T)) %>% arrange(B,C)
输出:
我写的是
df %>% arrange(B) %>% group_by(B) %>%
transmute(test =sum(cumsum(A))) %>% unique()
但它只是对每一列 B 求和,而不是累加。
可能我们需要通过'B'得到'A'的sum
然后得到累加和
library(dplyr)
df %>%
group_by(B) %>%
summarise(A = sum(A)) %>%
mutate(A = cumsum(A))
您需要在 group_by(B)
之后使用函数 cumsum
,即:
library(tidyverse)
df %>%
group_by(B) %>%
mutate(A_cum_sum = cumsum(A))
请注意,arrange(B)
是不相关的,因为您的数据按 B 分组。从上下文我推断只有 arrange(C)
是重要的,并且您已经在准备 df
所以就不需要了。
我想从数据框 df
创建一个摘要报告,其中每一行都是基于列 B
的列 A
的累积总和(其中 C
是另一个 id 列)。以下是数据和输出:
set.seed(154)
df <- data.frame(B = append(append(rep(1,10),rep(2,10)),rep(3,10)),
C = rep(1:10,3),
A = sample(0:10,30,replace=T)) %>% arrange(B,C)
输出:
我写的是
df %>% arrange(B) %>% group_by(B) %>%
transmute(test =sum(cumsum(A))) %>% unique()
但它只是对每一列 B 求和,而不是累加。
可能我们需要通过'B'得到'A'的sum
然后得到累加和
library(dplyr)
df %>%
group_by(B) %>%
summarise(A = sum(A)) %>%
mutate(A = cumsum(A))
您需要在 group_by(B)
之后使用函数 cumsum
,即:
library(tidyverse)
df %>%
group_by(B) %>%
mutate(A_cum_sum = cumsum(A))
请注意,arrange(B)
是不相关的,因为您的数据按 B 分组。从上下文我推断只有 arrange(C)
是重要的,并且您已经在准备 df
所以就不需要了。