【问题标题】:mean() function returns NAs inexplicablymean() 函数莫名其妙地返回 NA
【发布时间】:2020-05-11 09:35:22
【问题描述】:

我正在尝试在数据集中生成数字行的平均值 - 我使用 rio 的 import() 从 url 导入为 .csv - 使用代码 mean(dataset[398,5:24])

mean() 函数返回警告信息:

警告信息: 在 mean.default(test1) 中:参数不是数字或逻辑:返回 NA'''

尽管,当我输入 dataset[398,5:24] 来检查它们是否合乎逻辑时,R 会做出如下响应:

          V5       V6       V7       V8       V9      V10
398 1.877356 1.849893 1.923246 1.809628 1.949854 2.028761

         V11      V12      V13      V14      V15      V16
398 1.952358 1.960568 2.010918 2.042482 2.051661 2.031455

         V17      V18      V19      V20      V21      V22
398 2.044637 1.985774 1.785322 1.853449 1.882113 1.816115

        V23      V24
398 1.79505 1.806201 '''

我能做什么?我只是不明白为什么它认为这个论点不是数字或逻辑的,或者我现在能做什么。任何帮助将不胜感激。

【问题讨论】:

  • 你试过mean(as.numeric(dataset[398, 5:24]), na.rm = T)吗?

标签: r


【解决方案1】:

dataset[398,5:24] 仍然是一个数据框,mean 需要一个向量。

考虑来自mtcars 内置数据集的示例。

mtcars[8, 3:8]

#           disp hp drat   wt qsec vs
#Merc 240D 146.7 62 3.69 3.19   20  1

mean(mtcars[8, 3:8])
#[1] NA

警告信息: 在 mean.default(mtcars[8, 3:8]) 中: 参数不是数字或逻辑:返回 NA

你可以先unlist把数据转成向量,再用mean

mean(unlist(mtcars[8, 3:8]))
#[1] 39.43

如果您的数据中有NA,请添加na.rm = TRUE。所以在你的情况下,它会是:

mean(unlist(dataset[398,5:24]), na.rm = TRUE)

【讨论】:

  • 如果原始发布者要了解更多关于 tidyverse 的信息,这是我向初学者推荐的,我会将数据变长,(即 pivot_longer())以便在一列内平均,即平均值(my_variable,na.rm=TRUE)
猜你喜欢
  • 2013-08-02
  • 2012-03-12
  • 2022-11-23
  • 1970-01-01
  • 1970-01-01
  • 2012-05-19
  • 1970-01-01
  • 1970-01-01
  • 2014-01-23
相关资源
最近更新 更多