如何在R中创建运行总和摘要

如何在R中创建运行总和摘要,r,dplyr,cumsum,R,Dplyr,Cumsum,我想从dataframedf创建一个摘要报告,其中每一行是基于列B(其中C是另一个id列)的列a的累积和。以下是数据和输出: 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) 但

我想从dataframe
df
创建一个摘要报告,其中每一行是基于列
B
(其中
C
是另一个id列)的列
a
的累积和。以下是数据和输出:

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)

但是它只是对每一列B求和,而不是累加。

我们可能需要通过'B'得到'A'的
和,然后得到累加和

library(dplyr)
df %>% 
  group_by(B) %>% 
  summarise(A = sum(A))  %>% 
  mutate(A = cumsum(A))

我们可能需要通过“B”得到“A”的
,然后得到累积和

library(dplyr)
df %>% 
  group_by(B) %>% 
  summarise(A = sum(A))  %>% 
  mutate(A = cumsum(A))

您需要在a
groupby(B)
之后使用函数
cumsum
,即:

library(tidyverse)
df %>% 
   group_by(B) %>% 
   mutate(A_cum_sum = cumsum(A))

请注意,
arrange(B)
是不相关的,因为您的数据是按B分组的。根据上下文,我推断只有
arrange(C)
是重要的,并且您已经在准备
df
时使用了它,因此不再需要它。

您需要在a
groupby(B)
之后使用函数
cumsum
,即:

library(tidyverse)
df %>% 
   group_by(B) %>% 
   mutate(A_cum_sum = cumsum(A))

请注意,
arrange(B)
是不相关的,因为您的数据是按B分组的。根据上下文,我推断只有
arrange(C)
很重要,您已经在准备
df时使用了它,因此不再需要它。

我刚刚意识到,当您按两个维度分组时,这不起作用,而是希望累计总和基于一个维度dimension@Ana在这种情况下,您可能需要
df%>%groupby(B,C)%>%mutate(A=sum(A))%%>%ungroup%%>%distinct%%>%group\u by(B)%%>%mutate(A=cumsum(A))
谢谢,非常有用!我刚刚意识到,当你按两个维度分组时,这是行不通的,但我希望累计总和是以一个维度为基础的dimension@Ana在这种情况下,您可能需要
df%%>%groupby(B,C)%%>%mutate(A=sum(A))%%>%ungroup%%>%distinct%%>%groupby(B)%%>%mutate(A=cumsum(A))
谢谢,非常有用!