【问题标题】:How to calculate Average rating for each movie in R from CSV File?如何从 CSV 文件计算 R 中每部电影的平均评分?
【发布时间】:2020-03-13 17:10:04
【问题描述】:

我有 CSV 文件。 CSV 文件具有 user_id、Movie1、Movie2、Movie3、...、Movie250 列。 Please refer CSV file image for reference。每个用户对电影的评价不同。数据还包含许多 NA 值。我们不能省略 NA 值,否则我们将丢失可能有价值的数据。同时 NA 将不允许计算正确的平均评分。

我需要解决以下问题

  • 哪些电影的观看次数/收视率最高?
  • 每部电影的平均评分是多少?
  • 定义收视率最高的前 5 部电影。定义观众最少的前 5 部电影。

【问题讨论】:

  • See here 提出一个人们可以帮助解决的 R 问题。这包括数据样本(不是图片)和所有必要的代码。还要记住minimal reproducible exampleminimal 部分。这似乎是一个家庭作业问题;你试过了吗?

标签: r


【解决方案1】:

我们可以使用pmax来获取最大值`

do.call(pmax, c(df1[-1], na.rm = TRUE))

或者找到评分最高的电影

apply(df1[-1], 1, function(x) names(x)[which.max(x)])

每部电影的平均评分,我们可以通过colMeans找到

colMeans(df1[-1], na.rm = TRUE)

要获得前 5 部电影,一种选择是转换为“长”格式

library(dplyr)
library(tidyr)
df1 %>%
    summarise_at(vars(starts_with('Movie')), max, na.rm = TRUE) %>%
    pivot_longer(everything(), values_drop_na = TRUE) %>%
    top_n(5, wt = value)

【讨论】:

  • pivot_longer(., Everything(), values_drop_na = TRUE) 中的错误:找不到函数“pivot_longer”
  • @sdp 这是tidyr packageVersion('tidyr')# [1] ‘1.0.0’ pivot_longer 来自那个版本。否则,使用gather(na.rm = TRUE)
  • 这是正确的吗? df %>% summarise_at(vars(starts_with('Movie')), max, na.rm = TRUE) %>% gather(na.rm = TRUE) %>% top_n(value, 5)
  • @sdp 错误信息是什么。是的,这是正确的。您是否收到相同的消息could not find function pivot_longer。如果是这种情况,请检查packageVersion('tidyr')
  • @sdp packageVersion('tidyr') 是什么你加载了library(tidyr)。如果版本。低于 1.0.0,因为最近添加了这个功能,所以它不会工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-27
  • 2018-01-04
  • 2016-03-28
  • 1970-01-01
  • 1970-01-01
  • 2015-08-27
  • 2019-11-05
相关资源
最近更新 更多