簡體   English   中英

如何使用dplyr基於R中的group_by對數據幀進行子集化

[英]How to use dplyr to subset dataframe based on group_by in R

我有一個包含銷售和人口數據的數據框。 參考如下:

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 按月分組(僅顯示一月但轉到十二月)以獲得銷售額和當月人口的總和。

我用這行代碼得到了我的人口的銷售額,結果是 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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM