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.frame
叫df
,那么试试:
df$"SUM/col" <- apply(df, 1, function(x) mean(x, na.rm=T))
apply
函数计算每一行的总和(不包括 NA
s)除以非 NA
元素的总数。然后将生成的向量作为列添加到 df
.
我们可以使用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)
我好像想不通。我想要做的是在我的数据框中创建一个新列,其中几列的总和除以构成总和的列数。 像这样:
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.frame
叫df
,那么试试:
df$"SUM/col" <- apply(df, 1, function(x) mean(x, na.rm=T))
apply
函数计算每一行的总和(不包括 NA
s)除以非 NA
元素的总数。然后将生成的向量作为列添加到 df
.
我们可以使用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)