R连接两个数据帧,按列分组并计算平均值
我在谷歌上搜索过,但似乎找不到解决问题的办法。我有两个数据帧,一个按ID保存电影,并包含它们的分级:R连接两个数据帧,按列分组并计算平均值,r,statistics,aggregate,mean,R,Statistics,Aggregate,Mean,我在谷歌上搜索过,但似乎找不到解决问题的办法。我有两个数据帧,一个按ID保存电影,并包含它们的分级: > summary(ratings) movieId mean_rating rating_count Min. : 1 Min. : 1.000 Min. : 1.0 1st Qu.: 6796 1st Qu.: 5.600 1st Qu.: 3.0 Median : 65880
> summary(ratings)
movieId mean_rating rating_count
Min. : 1 Min. : 1.000 Min. : 1.0
1st Qu.: 6796 1st Qu.: 5.600 1st Qu.: 3.0
Median : 65880 Median : 6.471 Median : 18.0
Mean : 58790 Mean : 6.266 Mean : 747.8
3rd Qu.: 99110 3rd Qu.: 7.130 3rd Qu.: 205.0
Max. :131262 Max. :10.000 Max. :67310.0
rn
Length:26744
Class :character
Mode :character
另一个是添加到这些电影中的用户定义标记的集合。它还有一个名为movieId
的列,对应于第一个数据帧中的movieId
> summary(tags)
userId movieId tag
Min. : 18 Min. : 1 Length:465564
1st Qu.: 28780 1st Qu.: 2571 Class :character
Median : 70201 Median : 7373 Mode :character
Mean : 68712 Mean : 32628
3rd Qu.:107322 3rd Qu.: 62235
Max. :138472 Max. :131258
timestamp rn
Min. :1135429210 Length:465564
1st Qu.:1245007262 Class :character
Median :1302291181 Mode :character
Mean :1298711076
3rd Qu.:1366217861
Max. :1427771352
我想做的是得到每个标签的平均电影评级。基本上,这个SQL查询的等价物是:
SELECT t.tag, AVG(r.mean_rating) FROM movielens_tags t RIGHT JOIN movielens_ratings r ON t.movieId = r.movieId GROUP BY t.tag;
我只需要输出中的两列:
tag mean_rating
sci_fi 6.23
bollywood 7.45
action 5.75
但是,此SQL查询永远不会结束。这就是为什么我想在R中执行此操作。有人能帮助我如何执行此操作吗?以下是SQL代码的
dplyr
翻译(应安装包dplyr
):
请添加可复制的示例并添加预期输出。@Sotos添加了预期输出!一个可复制的样品是相当困难的,因为这正是我的问题所在。我的疑问永远不会结束!
library(dplyr)
movielens_tags %>%
right_join(movielens_ratings, by = "movieId") %>%
group_by(tag) %>%
summarise(mean_rating = mean(mean_rating)