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
答案 0 :(得分:4)
我们可以使用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
数据强>
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
。