首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用R中列的不同类别聚合数据

用R中列的不同类别聚合数据
EN

Stack Overflow用户
提问于 2020-09-11 14:57:27
回答 2查看 35关注 0票数 0

我正在研究这个数据,其中的学生名单(,ID,)链接到他们最喜欢的体育项目,只能从7个不同的体育项目中选择。对于一个独特的ID,可能有多个喜爱的运动。下面是它的快照。

代码语言:javascript
运行
复制
 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),并显示这些体育项目,一些结果如下:

代码语言:javascript
运行
复制
 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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-11 19:12:53

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

代码语言:javascript
运行
复制
> 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    
票数 0
EN

Stack Overflow用户

发布于 2020-09-11 20:06:29

另一种你可以尝试的方法

代码语言:javascript
运行
复制
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  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63849566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档