R:通过附加列对数据框进行分组

时间:2019-05-15 16:23:17

标签: r dataframe

我想对数据框的行进行分组。但是这些列不应该摘要,我想附上它们。

我尝试了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              

列数代表数量,因此不再需要数量列。 我想将它们分组并附加相同的订单ID行,以获取此解决方案:

  `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 个答案:

答案 0 :(得分:1)

使用tidyr包的spreadgather函数,也许可以尝试:

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")