R: Группировать фрейм данных, прикрепляя столбцы - PullRequest
0 голосов
/ 15 мая 2019

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

Я попробовал пакет tidyverse и пришел к близкому (неправильному) решению.

Это мой df:

  `Order ID` Quantity `Sub-Category 1` `Sub-Category 2` `Sub-Category 3` `Sub-Category 4` `Sub-Category 5` `Sub-Category 6`
  <chr>         <dbl> <chr>            <chr>            <chr>            <chr>            <chr>            <chr>           
1   22              2 Bookcases        Bookcases        NA               NA               NA               NA              
2   33              3 Chairs           Chairs           Chairs           NA               NA               NA              
3   22              2 Labels           Labels           NA               NA               NA               NA              
4   33              5 Tables           Tables           Tables           Tables           Tables           NA              

Количество столбцов представляет количество, поэтому столбец количество больше не требуется.Я хочу сгруппировать их и прикрепить одинаковые строки идентификатора заказа, чтобы получить это решение:

  `Order ID` Quantity `Sub-Category 1` `Sub-Category 2` `Sub-Category 3` `Sub-Category 4` `Sub-Category 5` `Sub-Category 6`
  <chr>         <dbl> <chr>            <chr>            <chr>            <chr>            <chr>            <chr>           
1   22              2 Bookcases        Bookcases        Labels               Labels               NA               NA              
2   33              3 Chairs           Chairs           Chairs           Tables               Tables               Tables               Tables               Tables

Большое спасибо, благодарю вас за помощь.

1 Ответ

1 голос
/ 15 мая 2019

Используя функции tidyr и gather пакета *1001*, попробуйте:

library(tidyverse)


df <- data %>% 
  select(-Quantity) %>%
  gather(key = "col", value = "val", -`Order ID`) %>% 
  group_by(`Order ID`, col) %>% 
  mutate(val = max(val, na.rm = T)) %>% 
  slice(1) %>% 
  ungroup() %>% 
  spread(key = "col", value = "val")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...