【问题标题】:How to calculate mean value for each column ignoring NA [duplicate]如何计算忽略NA的每列的平均值[重复]
【发布时间】:2019-08-19 02:09:41
【问题描述】:

表、数据帧。

其中有 12 列变量名和 24 行 df

喜欢:

Var1 Var2 Var3 Var4 Var12
1     NA   2     3    4
5     6    2     3    3
NA    7    8     NA   4

我想计算每列的平均值,同时忽略 Na 例如:

colMeans(df)

得到如下结果:

Var1  Var2  Var3  Var4  Var12
 3     6,5   4     3     3,66

我不希望在计算平均值时考虑NA

我尝试了一些方法,例如na.omit!is.na,但没有得到我上面描述的预期结果。

【问题讨论】:

  • colMeans(df, na.rm = TRUE)
  • 是的,有效! Thanx 太容易了.. :P
  • 您可能想将其发布为答案?
  • Means 的计算是正确的,但是如何在获取每个平均数上方的 col 名称时让它像水平一样?
  • 不确定你的意思。你能用预期的输出更新帖子吗?

标签: r data.table mean


【解决方案1】:

对于data.table dt,看起来像这样:

dt
   Var1 Var2 Var3 Var4 Var12
1:    1   NA    2    3     4
2:    5    6    2    3     3
3:   NA    7    8   NA     4

你可以简单地使用lapply():

dt[, lapply(.SD, mean, na.rm = TRUE)]

结果是:

   Var1 Var2 Var3 Var4    Var12
1:    3  6.5    4    3 3.666667

【讨论】:

  • 如果不是行的意思,你会如何表达确切的东西?
  • 你可以使用dt[, apply(.SD, 1, mean, na.rm = TRUE)]
  • 出于某种原因,现在 dt[, lapply(.SD, mean, na.rm = TRUE)] 给了我一个错误:.subset(x, j) 中的错误:无效的下标类型 'list ' 但在我没有收到错误之前?
  • 哦,好的,我已修复它应该已转换回数据表
猜你喜欢
  • 2021-04-16
  • 2020-03-27
  • 1970-01-01
  • 2020-03-28
  • 1970-01-01
  • 2017-08-28
  • 1970-01-01
  • 1970-01-01
  • 2016-02-28
相关资源
最近更新 更多