Ich habe gegoogled herum, aber ich kann nicht scheinen, eine Lösung für das Problem zu finden, das ich habe. Ich habe zwei Datenrahmen, hält man Filme von ID und enthält Bewertungen für sie:R verbinden zwei Datenrahmen, Gruppe für Spalte und berechnen Mittelwert
> 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
Die andere ist eine Sammlung von benutzerdefinierten Tags, die zu diesen Filmen hinzugefügt wurden. Es hat auch eine Spalte namens movieId
, die movieId
im ersten Datenrahmen entspricht.
> 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
Was ich tun möchte, ist die mittlere Filmbewertung für jedes des Tags erhalten. Grundsätzlich ist das Äquivalent dieser SQL-Abfrage:
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;
Ich brauche nur zwei Spalten in der Ausgabe:
tag mean_rating
sci_fi 6.23
bollywood 7.45
action 5.75
jedoch diese SQL-Abfrage wird niemals enden. Deshalb möchte ich es in R machen. Kann mir jemand helfen, wie ich das angehen soll? Hier
Bitte fügen Sie reproduzierbaren Beispiel und fügen Sie die erwartete Ausgabe. – Sotos
@Sotos Hinzugefügt die erwartete Ausgabe! Eine reproduzierbare Probe ist ziemlich schwierig, da genau das mein Problem ist. Meine Anfrage endet nie! –