UseMethod出错(“select _”)

时间:2016-08-05 19:05:43

标签: r dplyr

长时间潜伏,第一次海报。

我正在介绍R课程,我正在尝试创建糖尿病“diabage2”及其胰岛素使用“胰岛素”(是/否/ NA)诊断年龄的直方图和摘要。数据集是brfss2013。

我的第一次尝试是brfss2013 %>% group_by(insulin = "Yes") %>% summarise(MEAN = mean(brfss2013$diabage2, na.rm = TRUE), n = n())

  insulin     MEAN      n
    <chr>    <dbl>  <int>
1     Yes 51.48694 491775

看起来很好,除了我知道MEAN和n报告的样本均值和n,而不是样本的选定部分(我在项目的另一部分遇到了这个问题 - 不知道为什么它不起作用我可以确认答案是不正确的。)

当我尝试使用subset()并仅选择符合我条件的数据时,我可以轻松地对其进行汇总并制作直方图(即胰岛素=是的一组数据和胰岛素=否的一组数据)

wInsulin <- subset(brfss2013, insulin = "Yes", select = c(diabage2))
woInsulin <- subset(brfss2013, insulin = "No", select = c(diabage2))

它们看起来是一样的,即使它们不应包含任何相同的观察结果,因为它们是相互排斥的。

当我尝试使用select()来修剪我从330变量到3使用的集合时,我遇到了另一个问题:

InsulinData <- select(brfss2013$insulin, brfss2013$diabage, brfss2013$sex, brfss2013$X_state)

给了我错误

Error in UseMethod("select_") : 
  no applicable method for 'select_' applied to an object of class "factor"

我不知道该怎么做。

我觉得我错过了一些非常基本的东西,但是我缺乏经验意味着我没有基础来理解很多其他人的问题的解决方案,到目前为止,课程涵盖了比处理R的实际细节。我真的很感激我能得到的任何指导。

1 个答案:

答案 0 :(得分:1)

你几乎有这个:

InsulinData <- select(brfss2013$insulin, 
                      brfss2013$diabage, 
                      brfss2013$sex, 
                      brfss2013$X_state)

应该是:

InsulinData <- select(brfss2013, insulin, diabage, sex, X_state)

使用dplyr,您只需要指定一次data.frame。 select认为您试图从变量brfss2013$insulin中选择列,但您不能。

此外,您的第一组插图有点令人困惑:

group_by(insulin = "yes")

group_by(insulin)并按filter(insulin == "yes")

过滤行

可能想要更像的东西:

brfss2013 %>% 
  group_by(insulin) %>% 
    summarise(MEAN = mean(diabage2, na.rm = TRUE), n = n())