Р: Как мне составить сводную таблицу с агрегированной и неагрегированной информацией? - PullRequest
0 голосов
/ 07 января 2019

Я работаю с набором данных bigmart . Имеются гипотетические данные о продажах для десяти магазинов.

Я хочу составить таблицу, которая показывает каждый магазин, их общий объем продаж, среднюю цену и тип магазина / возраст / размер.

Я использовал этот код для добавления совокупной информации

xy <- group_by(train, Outlet_Identifier) %>% 
  summarize(sales = sum(Item_Outlet_Sales), 
            avgmrp = median(Item_MRP)) %>% 
  arrange(desc(sales))

и я сделал таблицу для размера каждой розетки с этим

table(Outlet_Identifier,Outlet_Size)

Вот как выглядят данные

   Outlet_Identifier    sales avgmrp
   <fct>                <dbl>  <dbl>
 1 OUT027            3453926.   144.
 2 OUT035            2268123.   146.
 3 OUT049            2183970.   142.
 4 OUT017            2167465.   141.
 5 OUT013            2142664.   142.
 6 OUT046            2118395.   144.
 7 OUT045            2036725.   142.
 8 OUT018            1851823.   141.
 9 OUT010             188340.   144.
10 OUT019             179694.   144.

                 Outlet_Size
Outlet_Identifier     High Medium Small
           OUT010 555    0      0     0
           OUT013   0  932      0     0
           OUT017 926    0      0     0
           OUT018   0    0    928     0
           OUT019   0    0      0   528
           OUT027   0    0    935     0
           OUT035   0    0      0   930
           OUT045 929    0      0     0
           OUT046   0    0      0   930
           OUT049   0    0    930     0

Как мне сделать сводную таблицу // добавить неагрегированную информацию в команду, которая использует обобщение?

Редактировать: это мой желаемый вывод

   Outlet_Identifier    sales avgmrp    type         size
   <fct>                <dbl>  <dbl>    <  >         <  >
 1 OUT027            3453926.   144.    grocery       934
 2 OUT035            2268123.   146.    grocery       564
 3 OUT049            2183970.   142.    grocery       934
 4 OUT017            2167465.   141.    supermarket   874
 5 OUT013            2142664.   142.    grocery       356
 6 OUT046            2118395.   144.    supermarket   764
 7 OUT045            2036725.   142.    grocery       934
 8 OUT018            1851823.   141.    supermarket   634
 9 OUT010             188340.   144.    supermarket   334
10 OUT019             179694.   144.    grocery       343

1 Ответ

0 голосов
/ 07 января 2019

Вам просто нужно передать столбец "type" в некоторую функцию агрегирования, а для столбца size вы можете использовать функцию n().

train %>%
  group_by(Outlet_Identifier) %>%
  summarise(
    sales = sum(Item_Outlet_Sales),
    avgmrp = median(Item_MRP),
    type = min(Outlet_Type),
    size = n()
  ) %>%
  arrange(desc(sales))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...