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

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

问题描述:

我似乎无法弄清楚这一点。我想要做的是在我的数据框中创建一个新列,其中列的总和除以列出总和的列数。 所以这样的:R列的总和除以列数没有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 

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

DATA

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) 

如果您data.frame被称为df,然后尝试:

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

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

+2

或'申请(DF,1,意思是,na.rm = T)' – Gregor