如何简化R语言中音乐流派流总量统计排序的代码?
简化R语言音乐流派播放量统计代码
你的原代码步骤可以合并简化,以下提供两种常用的简化方案:
方案一:基于基础R(兼容原代码逻辑)
利用aggregate的公式写法自动生成正确列名,同时合并排序步骤,减少中间变量:
# 分组求和+降序排序一步完成 genre_sorted <- aggregate(streams ~ genre, data = music_data, FUN = sum)[order(-streams), ] # 若需要将流派设为行名并仅保留播放量列 genre_grouped_sorted <- genre_sorted rownames(genre_grouped_sorted) <- genre_grouped_sorted$genre genre_grouped_sorted$genre <- NULL
方案二:基于tidyverse(更简洁的管道式写法)
如果常用dplyr包,用管道操作可以把所有步骤串联起来,可读性更高:
library(dplyr) # 分组、求和、排序一气呵成 genre_sorted <- music_data |> group_by(genre) |> summarise(streams = sum(streams)) |> arrange(desc(streams)) # 若需将流派设为行名并仅保留播放量列,直接用内置函数转换 genre_grouped_sorted <- genre_sorted |> column_to_rownames("genre")
简化说明:
- 原代码中手动重命名列的步骤可通过
aggregate(streams ~ genre, ...)自动生成genre和streams列,无需额外调用colnames。 - 排序步骤可以直接嵌入赋值语句,避免创建多余的中间变量(比如原代码的
genre_sorted之前的genre变量)。 - tidyverse方案用管道
|>串联所有操作,逻辑连贯,无需反复赋值。
内容的提问来源于stack exchange,提问作者Ana
相关产品推荐
相关产品推荐

