【问题标题】:Dealing with NaN when calculating means计算均值时处理 NaN
【发布时间】:2014-02-14 17:42:28
【问题描述】:

我想创建一个包含其他两列平均值的新列。
例如按原表(dat)看起来是这样的:

    A   B
1   1   NaN
2   3   2
3   2   5
4   4   4
5   6   NaN
6   5   3

我现在想要一个平均 A 和 B 的 C 列,所以我尝试了以下方法

dat$C<-(dat$A + $dat$B)/2

但我得到的是这个

    A   B     C
1   1   NaN   NaN
2   3   2     2.5
3   2   5     3.5
4   4   4     4
5   6   NaN   NaN
6   5   3     4

当我想要的是这个时

    A   B     C
1   1   NaN   1
2   3   2     2.5
3   2   5     3.5
4   4   4     4
5   6   NaN   6
6   5   3     4

那么如何在解决数据集中缺失值的同时计算这个新的平均值列?

【问题讨论】:

  • 试试df$C &lt;- rowMeans(df, na.rm = TRUE),其中df是你的data.frame
  • @dickoa 感谢您的帮助。不幸的是,在我的实际数据集中,我还有其他标识符列,我没有计算平均值,所以这不起作用。
  • 只需将 data.frame 子集传递给 rowMeans :dat$C &lt;- rowMeans(dat[,c('A','B')], na.rm = TRUE)
  • @digEmAll 做到了!谢谢大家:)

标签: r nan mean calculated-columns


【解决方案1】:

你也可以这样做

dat$C <- apply(dat,1,function(x) mean(na.omit(x)))

na.omit 有助于了解您是否要创建更复杂的函数,因为na.omit 来自基数 R,而 na.rm 是某些函数的参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 2015-09-12
    • 2011-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多