【问题标题】:Get mean of a single variable with dplyr使用 dplyr 获取单个变量的平均值
【发布时间】:2021-02-14 22:24:34
【问题描述】:

我正在使用钻石数据集,并试图找到每个切割的平均价格。 我认为这会工作

diamonds_data %>%
  filter(Cut == 'Ideal') %>%
  mean(Price)

但我收到以下警告消息:

[1] NA
Warning message:
In mean.default(., diamonds_data, Price) :
  argument is not numeric or logical: returning NA

【问题讨论】:

  • 您是打算逐一计算平均价格,还是对所有削减的平均价格感兴趣?
  • 我想一次选择一个来制作闪亮的应用程序,所以我认为一次一个会很好。

标签: r dataframe dplyr mean


【解决方案1】:

您不能将mean 用作数据帧上的函数。如果要从列开始获取数值,请使用pull 从数据框中提取该列。

diamonds_data %>% 
  filter(Cut == "Ideal") %>% 
  pull(Price) %>% 
  mean()
# [1] 3457.542

【讨论】:

    【解决方案2】:

    要简单地让您的代码正常工作,请尝试mean(.$price)

    diamonds %>%
      filter(cut == 'Ideal') %>%
      {mean(.$price)}
    
    # [1] 3457.542
    

    更好的选择是一次计算每个cut 的平均价格,并将汇总表分配给一个对象。

    price <- diamonds %>%
      group_by(cut) %>%
      summarise(mean_price = mean(price))
    
    # # A tibble: 5 x 2
    #   cut       mean_price
    #   <ord>          <dbl>
    # 1 Fair           4359.
    # 2 Good           3929.
    # 3 Very Good      3982.
    # 4 Premium        4584.
    # 5 Ideal          3458.
    

    当你需要一些值时,从表中提取它。

    price$mean_price[price$cut == "Ideal"]
    
    # [1] 3457.542
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-28
      • 2021-02-03
      • 1970-01-01
      • 2018-10-04
      • 2016-03-14
      • 1970-01-01
      • 2017-10-25
      • 1970-01-01
      相关资源
      最近更新 更多