【问题标题】:Error when trying to calculate mean value, saying object doens't exist尝试计算平均值时出错,说对象不存在
【发布时间】:2020-03-19 14:55:26
【问题描述】:

我想从 nycflights 中的来源(EWR、JFK 和 LGA)找出平均 air_time 是多少,但我收到一条错误消息,指出该对象不存在。

library(tidyverse)
library(nycflights13)

flights %>% select(air_time)     (doing this shows that the column exists and with values)

现在尝试像下面这样计算平均值,给我一个错误

flights %>% select(mean(air_time))
Error: object 'air_time' not found
Run `rlang::last_error()` to see where the error occurred.

尝试运行:rlang::last_error() 它只是打印一个令人困惑的跟踪,并说 air_time 不存在,即使它确实存在。

起初我想可能是因为air_time 的类型为 dbl (double),并且我无法在 double 上运行 mean(..),但尝试 mean(1:10.4) 会产生 5.5,所以情况并非如此。非常欢迎任何帮助

【问题讨论】:

    标签: r


    【解决方案1】:

    函数select 将从您的数据框中选择变量。您可以selectair_time(数据框中的列名)但不能mean(air_time)

    相反,如果您想要每个起源的平均时间,您可以先group_by origin,然后summarise 来获取每个起源的平均值。请注意,由于有些数据缺失 (NA),您需要删除这些数据才能获得数值平均值而不是 NA。

    flights %>%
      group_by(origin) %>%
      summarise(mean_time = mean(air_time, na.rm = TRUE))
    

    输出

    # A tibble: 3 x 2
      origin mean_time
      <chr>      <dbl>
    1 EWR         153.
    2 JFK         178.
    3 LGA         118.
    

    【讨论】:

      【解决方案2】:

      我不是 tidyverse 的专家,但据我所知,问题出现在 select 语句中。 也许先尝试一些选择并在选择后运行平均值。在这段代码中,在我看来,您尝试选择某事的平均值。 如果我使用基本 R,例如

      A = flights$air_time
      mean(A, na.rm = T)
      

      我得到一个结果。

      【讨论】:

        【解决方案3】:

        我认为您没有正确使用 dplyr。您不能使用select(mean(air_time)),因为您实际上是在尝试选择平均列。您要做的是:

        flights %>% summarise(mean_air_time = mean(air_time, na.rm=TRUE))
        

        【讨论】:

          猜你喜欢
          • 2021-12-08
          • 1970-01-01
          • 1970-01-01
          • 2016-08-20
          • 2021-09-04
          • 2011-09-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多