使用R tidyverse统计radio数据框中不同歌曲数最多的歌手
R tidyverse 实现统计播放不同歌曲数最多的艺术家
完整实现代码
你可以直接用以下代码完成需求:
radio %>% select(artist, song) %>% # 先对艺术家+歌曲组合去重,避免同一首歌重复播放导致计数虚高 distinct() %>% # 按艺术家分组 group_by(artist) %>% # 统计每个艺术家的不重复歌曲数量 summarise(unique_song_num = n()) %>% # 按不重复歌曲数降序排列 arrange(desc(unique_song_num)) %>% # 取排名第一的结果 slice_head(n = 1)
简化写法
你也可以用count()函数简化分组统计的步骤,代码更简洁:
radio %>% distinct(artist, song) %>% count(artist, name = "unique_song_num") %>% slice_max(order_by = unique_song_num, n = 1)
特殊情况处理
如果存在多位艺术家的不重复歌曲数并列第一,只需要把取数逻辑替换为filter(unique_song_num == max(unique_song_num)),即可返回所有并列第一的艺术家结果:
radio %>% distinct(artist, song) %>% count(artist, name = "unique_song_num") %>% filter(unique_song_num == max(unique_song_num))
注意事项
- 必须先执行
distinct()对艺术家+歌曲的组合去重,否则统计的是歌曲播放总次数,而非不同歌曲数量 - 如果不需要保留其他字段,
distinct()可以直接指定需要去重的列,无需提前select()
内容的提问来源于stack exchange,提问作者anders
相关产品推荐
相关产品推荐

