簡體   English   中英

R連接兩個數據框,按列分組並計算平均值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM