【问题标题】:dplyr returning global mean when columns are specifieddplyr 在指定列时返回全局平均值
【发布时间】:2017-02-07 00:30:48
【问题描述】:

我试图根据this SO post 返回每​​个组的平均值,但在这种情况下,解决方案似乎不起作用。有人可以解释为什么我仍然得到一个全局平均值吗?

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))

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    您的dplyr 应用程序并不完全正确。像这样删除csv$。因为您要从 dplyr 链的上下文中获取 mean 的数据,因此是从 group_by 函数的上下文中获取的。

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

    您还可以使用制表符和输入使您的代码(对其他人)更具可读性。

    【讨论】:

    • 不应该是 ` 而不是 ' 吗?
    • 我认为你是对的。我不习惯使用带有空格的名称。
    猜你喜欢
    • 2017-06-22
    • 2015-04-28
    • 2018-02-10
    • 2018-09-08
    • 2021-07-08
    • 2017-09-22
    • 1970-01-01
    • 2016-04-04
    • 1970-01-01
    相关资源
    最近更新 更多