Агрегирование нескольких столбцов в разных функциях в R с помощью группировки по нескольким ключам: Именованное агрегирование в R - PullRequest
0 голосов
/ 10 апреля 2020

df

     date       storeid itemid sales  biscuits   jelly        
1    2013-01-01     1    1      13       2        5
2    2013-01-01     1    2      11       3        2  
3    2013-01-02     2    1      14       4        3
4    2013-01-02     1    1      13       6        1
 ..........................    
1000 2015-12-05     1    1    10          1       12   and so on

У меня есть этот кадр данных. Мне нужно что-то вроде этого:

    Year-month   storeid   itemid   sum_sales  count_biscuits  mean_jelly
      2013-01      1         1        12           13               20
      2013-01      1         1        13           10               30

и т. Д.

Так что в основном мне нужно sh агрегировать или группировать по 3 ключам: год-месяц, идентификатор магазина и itemid. После этого я хочу рассчитать сумму продаж, количество печенья и среднее значение желе.

df$Year-month <- format(as.Date(df$date), "%Y-%m")
group1<-df %>% group_by(storeid, itemid, Year-month ) %>% summarise(sum_sales = sum(sales))

Как добавить количество печенья и среднее значение желе. Новичок в R, поэтому не знаю, как делать именованные агрегаты здесь

1 Ответ

2 голосов
/ 10 апреля 2020

После извлечения агрегации год-месяц вы можете group_by storeid, itemid и year_mon и выполнять различную агрегацию для разных столбцов.

library(dplyr)

df %>%
  mutate(date = as.Date(date), 
        year_mon = format(date, "%Y-%m")) %>%
   group_by(storeid, itemid, year_mon) %>%
   summarise(sum_sales = sum(sales), 
             count_biscuits = sum(!is.na(biscuits)), 
             #If no `NA` values we can just count number of rows in group.
             #count_biscuits = n(),
             mean_jelly = mean(jelly))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...