如何使用dplyr对R中基于group_by的数据帧进行子集处理



我有一个由销售和人口数据组成的数据框架。以下参考:

Location Sales Population Month
A         10       480     Jan
B         12       480     Jan
C         14       480     Jan 
A         13       480     Jan
B         11       480     Jan
C         16       480     Jan
A         12       480     Jan
B         10       480     Jan
C         14       480     Jan

我想做的是使用dplyr按月份分组(只显示1月,但显示12月(,计算销售额和当月人口的总和。

我用这行代码获得了销售额,我的人口显示为NA.

test2 <- df_2019 %>% group_by(Month) %>% summarize(SumSales = sum(Total_Sales, na.rm = TRUE), Pop_Sum = sum(Population, na.rm = TRUE))
Month
SumSales
Pop_Sum
1   Apr 285591.9    134786490
2   Aug 384246.5    131901771
3   Dec 254748.9    89512147
4   Feb 251463.7    135634878
5   Jan 243624.6    135901304
6   Jul 286468.8    134335668
7   Jun 283395.2    134335668
8   Mar 289453.8    135658132
9   May 365272.2    134768586
10  Nov 291248.8    89576444
11  Oct 375402.2    89589288
12  Sep 290888.5    132878020

期望输出如下所示:

Month
SumSales
Pop_Sum
1   Apr 285591.9    437
2   Aug 384246.5    440
3   Dec 254748.9    443
4   Feb 251463.7    435
5   Jan 243624.6    480
6   Jul 286468.8    455
7   Jun 283395.2    465
8   Mar 289453.8    460
9   May 365272.2    479
10  Nov 291248.8    435
11  Oct 375402.2    444
12  Sep 290888.5    451

其中Month Population具有多个具有相同值但销售额是唯一的行。任何帮助都会很有帮助!

由于population值已经计算完毕,我们可以为每个月取任何population值。例如,取Population的第一个值,我们可以进行

library(dplyr)
df_2019 %>% 
group_by(Month) %>% 
summarize(SumSales = sum(Total_Sales, na.rm = TRUE), 
Pop_Sum = first(Population))

相关内容

最新更新