2017-12-01 2 views
-1

Ich habe einen Datenrahmen mit einer release_year Spalte, die das Jahr anzeigt, in dem ein Lied veröffentlicht wurde, und eine play_count Spalte, die angibt, wie oft dieses Lied in einem bestimmten Jahr gespielt wurde. Hier ist ein reproduzierbares Beispiel:Finden der Gesamtfrequenz für jede Variable

release_year = c(1955, 1972, 1955, 2014, 1972) 
playcount = c(15, 2, 90, 6, 9) 
df = data.frame(release_year, playcount) 
df 

Wie würde ich die Daten aufzuräumen, so dass jedes Jahr nur einmal auftaucht und die Gesamt Gespielte Lieder ist für dieses Jahr gegeben? Zum Beispiel für das Jahr 1955, werde ich 105 haben und für das Jahr 1972 werde ich 11. Ich den folgenden Code versucht haben, mit tidyr:

gather(key = release_year, value = frequency, `1955`:`2014`) 

aber ein Fehler, sagt das Objekt nicht gefunden wird. Gibt es eine bessere Funktion als gather(), die ich hier verwenden sollte?

Antwort

1

können Sie versuchen, die dplyr Ansatz:

df%>%group_by(release_year)%>%summarise(playcount=sum(playcount)) 

# A tibble: 3 x 2 
# release_year playcount 
#   <dbl>  <dbl> 
#1   1955  105 
#2   1972  11 
#3   2014   6 
0

Sie können nur die count Funktion von dplyr verwenden (keine Notwendigkeit für tidyr):

library(dplyr) 
count(df, release_year, wt = playcount) 
#> # A tibble: 3 x 2 
#> release_year  n 
#>   <dbl> <dbl> 
#> 1   1955 105 
#> 2   1972 11 
#> 3   2014  6 
Verwandte Themen