Как использовать dplyr для подмножества фрейма данных на основе group_by в R - PullRequest
0 голосов
/ 10 марта 2020

У меня есть фрейм данных, который состоит из данных о продажах и населении. Ссылка ниже:

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 для группировки по месяцам (показывает только Janurary, но переходит к De c) для суммы продаж и численности населения месяца.

Я получаю, что продажи с этой строкой кода для моего населения выглядят как 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

Где Месяц Население имеет несколько строк с одинаковым значением, но продажи являются уникальными. Любая помощь будет очень полезна!

1 Ответ

1 голос
/ 10 марта 2020

Поскольку значения population уже рассчитаны, мы можем принять любое значение population для каждого месяца. Например, принимая 1-е значение Population, мы можем сделать

library(dplyr)

df_2019 %>% 
  group_by(Month) %>% 
  summarize(SumSales = sum(Total_Sales, na.rm = TRUE), 
            Pop_Sum = first(Population))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...