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

时间:2017-10-05 17:12:00

标签: r dataframe calculated-columns

我似乎无法解决这个问题。我想要做的是在我的数据框中创建一个新列,其中几列的总和除以总和的列数。 像这样:

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

2 个答案:

答案 0 :(得分:4)

我们可以使用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)

答案 1 :(得分:2)

如果data.frame被称为df,请尝试:

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

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