如何解决聚合具有R中列的不同类别的数据
我正在处理这些数据,其中一个学生列表( 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
解决方法
您可以使用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
,
另一种尝试的方式
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,Hockey
# 2 2 3 Basketball,surfing
# 3 3 2 Tennis,Basketball
# 4 4 1 Soccer
# 5 5 1 Soccer
# 6 6 2 Rafting,Soccer
# 7 7 1 Tennis
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。