【问题标题】:Aggregating data with different categories of a column in R在R中聚合具有不同类别列的数据
【发布时间】:2020-09-11 14:57:27
【问题描述】:

我正在处理这些数据,其中学生列表 (ID) 与他们最喜欢的运动相关联,这些运动只能从 7 种不同的运动中选择。对于一个唯一 ID,可能有不止一项喜爱的运动。以下是它的快照。

 ID    Sports
  1    Soccer
  2    Basketball
  3    Tennis
  1    Basketball
  4    Soccer
  2    Hockey
  3    Basketball
  5    Soccer
  6    Rafting
  2    surfing
  1    Hockey
  6    Soccer
  7    Tennis
  

我需要创建一个数据,显示每个学生 (ID) 喜欢的不同运动的数量,并显示这些运动,一些结果如下:

 ID           count                  All Favourite Sports
 1               3                   Soccer, Basketball,Hockey 
 2               3                   Basketball,Hockey,surfing
 3               2                   Tennis, Basketball
 4               1                   Soccer  
 5               1                   Soccer
 6               2                   Rafting, Soccer
 7               1                   Tennis

【问题讨论】:

    标签: r count aggregate


    【解决方案1】:

    您可以使用dplyr 包和以下代码完成此任务。请注意,data 应该是您问题中 data.frame 的名称:

    > data %>% group_by(ID) %>% 
    +     summarize(count = n_distinct(Sports),
    +               all_sports = toString(Sports)) %>%
    +     ungroup()
    
    # A tibble: 7 x 3
         ID count all_sports                 
      <int> <int> <chr>                      
    1     1     3 Soccer, Basketball, Hockey 
    2     2     3 Basketball, Hockey, surfing
    3     3     2 Tennis, Basketball         
    4     4     1 Soccer                     
    5     5     1 Soccer                     
    6     6     2 Rafting, Soccer            
    7     7     1 Tennis    
    

    【讨论】:

      【解决方案2】:

      你可以尝试另一种方式

      library(dplyr)
      df %>% 
        group_by(ID) %>% 
        transmute(ID, count = n(), `All Favourite Sports` = paste(unique(Sports), collapse = ", ")) %>% 
        slice(1) %>% 
        ungroup()
      
      #       ID count `All Favourite Sports`     
      #     <int> <int> <chr>                      
      # 1     1     3   Soccer, Basketball, Hockey 
      # 2     2     3   Basketball, Hockey, surfing
      # 3     3     2   Tennis, Basketball         
      # 4     4     1   Soccer                     
      # 5     5     1   Soccer                     
      # 6     6     2   Rafting, Soccer            
      # 7     7     1   Tennis  
      

      【讨论】:

        猜你喜欢
        • 2021-01-28
        • 1970-01-01
        • 2021-10-26
        • 2021-11-21
        • 2016-03-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多