R 列总和除以没有 NA 的列数

R sum of columns divided by number of columns without NA

我好像想不通。我想要做的是在我的数据框中创建一个新列,其中几列的总和除以构成总和的列数。 像这样:

ID  2003    2004    2005    2006
1   1   4   1   NA
2   2   2   NA  3
3   1   3   NA  NA
4   4   1   1   NA
5   3   1   4   2

对此:

ID  2003    2004    2005    2006    SUM/col
1   1   4   1   NA  2
2   2   2   NA  3   2.33
3   1   3   NA  NA  2
4   4   1   1   NA  3
5   3   1   4   2   2.5

如果你的data.framedf,那么试试:

df$"SUM/col" <- apply(df, 1, function(x) mean(x, na.rm=T))

apply 函数计算每一行的总和(不包括 NAs)除以非 NA 元素的总数。然后将生成的向量作为列添加到 df.

我们可以使用rowMeans函数,设置na.rm = TRUEdt[, -1] 是一种排除分析的第一列的方法。

dt$`SUM/col` <- rowMeans(dt[, -1], na.rm = TRUE)
dt
  ID X2003 X2004 X2005 X2006  SUM/col
1  1     1     4     1    NA 2.000000
2  2     2     2    NA     3 2.333333
3  3     1     3    NA    NA 2.000000
4  4     4     1     1    NA 2.000000
5  5     3     1     4     2 2.500000

数据

dt <- read.table(text = "ID  2003    2004    2005    2006
1   1   4   1   NA
                 2   2   2   NA  3
                 3   1   3   NA  NA
                 4   4   1   1   NA
                 5   3   1   4   2",
                 header = TRUE)