2017-02-06 5 views
0

Ich versuche, den Mittelwert für jede Gruppe basierend auf this SO post zurückzugeben, aber die Lösung scheint in diesem Fall nicht zu funktionieren. Kann jemand erklären, warum ich immer noch einen globalen Mittelwert bekomme?dplyr gibt den globalen Mittelwert zurück, wenn Spalten angegeben sind

tmp = tempfile(fileext = ".xlsx") 
download.file(url = "https://www.bls.gov/emp/ind-occ-matrix/occupation.xlsx", destfile = tmp, mode="wb") 
library(readxl) 
csv <- read_excel(tmp,sheet=8) 
######################################################## 
colnames(csv)<-c("title","code","Occupation Type","Employment2014","Employment2024" ,"EmploymentChange2014-24.Num","EmploymentChange2014-24.Percent","Percent self employed2014","Job openings due to growth and replacements2014-24","Median annual wage2015","Typical education needed for entry","Work experience in a related occupation","Typical on-the-job training needed") 
csv<-csv[csv[,3]=="Line item",] 
csv$"Median annual wage2015"<-as.numeric(csv$"Median annual wage2015") 

library(dplyr) 
csv%>%group_by(csv$"Typical education needed for entry")%>%summarise(n=n(),mean=mean(csv$"Median annual wage2015",na.rm=T)) 

Antwort

0

Ihre dplyr Anwendung ist nicht ganz korrekt. Entfernen Sie csv$ wie folgt. Weil Sie die Daten für mean aus dem Kontext der dplyr-Kette und damit der group_by-Funktion erhalten.

library(dplyr) 
csv %>% 
    group_by(`Typical education needed for entry`) %>% 
    summarise(n=n(), 
    mean=mean(`Median annual wage2015`,na.rm=T)) 

Auch können Sie Ihren Code besser lesbar (für andere) unter Verwendung von Tabs machen und tritt ein.

+1

sollte es nicht "statt" sein? –

+0

Ich denke, du hast Recht. Ich bin nicht gewohnt, mit Namen mit Leerzeichen in ihnen zu arbeiten. – Wietze314

Verwandte Themen