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 = TRUE
。 dt[, -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
。
或'申请(DF,1,意思是,na.rm = T)' – Gregor