You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言技术问询:移除无关行及筛选电影数据集评论数达标行

嘿,我来帮你搞定这两个问题,尤其是你提到的电影数据集筛选的小坑——之前结果只剩五星评分的电影,确实是因为那些只有1条评论的刚好全是五星,咱们一步步来解决:

1. R语言中移除无关行的通用方法

移除无关行的方式主要看你“无关”的定义,常见的几种场景:

  • 按条件筛选保留行:用dplyr::filter()(推荐,语法清晰)或者基础R的subset(),比如移除评分低于2的行:filter(df, rating >= 2)
  • 移除缺失值行:用na.omit(df)或者dplyr::drop_na()
  • 按行索引移除:比如要删除第1、3行,用df[-c(1,3), ]
2. 针对电影数据集筛选评论数≥10的行并计算平均评分

咱们先聚焦你的具体需求:先筛选出评论数至少10条的电影,再计算它们的平均评分,避免之前误保留单条五星评论电影的问题。

首先,假设你的数据集结构类似这样(模拟你提到的dput()样本):

# 模拟电影评论数据集的dput
movie_ratings <- structure(list(
  movie_id = c(1,1,1,1,1,1,1,1,1,1,2,2,3,3,3,4),
  rating = c(4,5,3,4,5,2,4,5,3,4,5,5,5,5,5,5)
), class = "data.frame", row.names = c(NA, -16L))

这个示例里:

  • 电影1有10条评论(符合要求)
  • 电影2/3/4的评论数都不足10,其中3、4全是五星评论(对应你之前遇到的情况)

方法一:用dplyr包(推荐,语法直观)

先确保安装并加载dplyr:

install.packages("dplyr")
library(dplyr)

方式A:得到汇总结果(每个电影一行,含评论数+平均评分)

这是最直接的需求实现:

movie_summary <- movie_ratings %>%
  group_by(movie_id) %>% # 按电影分组
  summarise(
    review_count = n(), # 统计每组的评论数
    avg_rating = mean(rating) # 计算每组的平均评分
  ) %>%
  filter(review_count >= 10) # 只保留评论数≥10的电影

# 查看结果,只有符合要求的电影1
print(movie_summary)

方式B:保留原始评论行(仅保留符合条件的电影的所有评论)

如果你需要后续对这些评论做更多分析,而不是直接汇总:

filtered_ratings <- movie_ratings %>%
  group_by(movie_id) %>%
  filter(n() >= 10) %>% # 过滤出组内评论数≥10的行
  ungroup() # 取消分组,方便后续操作

# 查看结果,只有电影1的10条评论
print(filtered_ratings)

方法二:用基础R(不依赖第三方包)

如果你不想用dplyr,用基础R也能实现:

# 第一步:统计每个电影的评论数
review_counts <- aggregate(rating ~ movie_id, data = movie_ratings, FUN = length)
colnames(review_counts)[2] <- "review_count"

# 第二步:筛选出评论数≥10的电影ID
valid_movie_ids <- review_counts[review_counts$review_count >= 10, "movie_id"]

# 第三步:过滤原始数据集,只保留符合条件的电影评论
filtered_ratings_base <- movie_ratings[movie_ratings$movie_id %in% valid_movie_ids, ]

# 第四步:计算这些电影的平均评分
avg_ratings_base <- aggregate(rating ~ movie_id, data = filtered_ratings_base, FUN = mean)
colnames(avg_ratings_base)[2] <- "avg_rating"

print(avg_ratings_base)

为什么之前会只剩五星评分的电影?

大概率是你之前的筛选逻辑搞反了——比如误保留了评论数≤1的电影,而这些电影刚好全是五星评论。用上面的分组过滤逻辑,就能精准锁定评论数达标的电影,避免这个问题。

内容的提问来源于stack exchange,提问作者bgg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:05:59