如何在R中创建运行总和摘要
我想从dataframe如何在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) 但
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))
您需要在agroupby(B)
之后使用函数cumsum
,即:
library(tidyverse)
df %>%
group_by(B) %>%
mutate(A_cum_sum = cumsum(A))
请注意,arrange(B)
是不相关的,因为您的数据是按B分组的。根据上下文,我推断只有arrange(C)
是重要的,并且您已经在准备df
时使用了它,因此不再需要它。您需要在agroupby(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))
谢谢,非常有用!