R语言电影数据集处理:按评分分组限3条的代码问题排查
问题分析与代码修正
你的代码存在几个关键问题,导致无法实现“每个评分保留3条记录”的需求,具体错误和修正方案如下:
代码错误点
- 分组逻辑错误:你需要按**评分列(overall_score)**分组来控制每个评分的记录数,但代码里用
group_by(uid, title)是按用户和电影标题分组,完全偏离需求。 - slice参数无效:
slice(13:3)的起始索引大于结束索引,不会返回任何数据,正确的写法应该是slice(1:3)来取每组前3条记录。 - 列名不匹配:你描述的评分列是
overall_score,但代码里排序用的是Overall,如果数据集里实际列名是overall_score,这会导致排序失效,甚至报错。 - head(10)逻辑冗余且混乱:分组后用
head(10)会取每组前10条,和你要的每组3条需求冲突,且位置错误。
修正后的代码
假设你的评分列实际名称是overall_score,修正后的代码如下:
movie2 <- movie_reviews %>% arrange(desc(overall_score)) %>% # 按评分降序排列,确保每组内的记录顺序符合你的需求 group_by(overall_score) %>% # 按评分分组,控制每个评分的记录数 slice(1:3) # 每组保留前3条记录
如果你的评分列确实是Overall,把代码里的overall_score替换成Overall即可。
执行这段代码后,每个评分(10、9…1)都会保留3条记录,解决之前Top10全是评分10电影的问题。
内容的提问来源于stack exchange,提问作者thehavoc
相关产品推荐
相关产品推荐

