[英]R join two data frames, group by column and calculate 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 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;
我只需要輸出中的 2 列:
tag mean_rating
sci_fi 6.23
bollywood 7.45
action 5.75
但是,這個 SQL 查詢永遠不會結束。 這就是為什么我想在 R 中做到這一點。任何人都可以幫助我解決這個問題嗎?
這是您的 SQL 代碼的dplyr
翻譯(應安裝包dplyr
):
library(dplyr)
movielens_tags %>%
right_join(movielens_ratings, by = "movieId") %>%
group_by(tag) %>%
summarise(mean_rating = mean(mean_rating)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.