将R中的总行数除以整行数
我有一个如下的数据集。我想用代码创建score变量 分数的计算;整行总数/整列数 例如,第1行的分数计算:(1+2+1)/3=1.33 例如,第2行的分数计算:(1+1)/2=1将R中的总行数除以整行数,r,R,我有一个如下的数据集。我想用代码创建score变量 分数的计算;整行总数/整列数 例如,第1行的分数计算:(1+2+1)/3=1.33 例如,第2行的分数计算:(1+1)/2=1 df x1x2x3skor 1 1 2 1 1.33 2 1 NA 1.00 3 2 NA 2.00 4 3 2 2 2.33 5 NA 21.50 > 使用apply(): cols使用apply(): cols您实际上可以采用行均值忽略NA值 df$Skor <- rowMeans(df, na
df
x1x2x3skor
1 1 2 1 1.33
2 1 NA 1.00
3 2 NA 2.00
4 3 2 2 2.33
5 NA 21.50
>
使用apply()
:
cols使用apply()
:
cols您实际上可以采用行均值忽略NA
值
df$Skor <- rowMeans(df, na.rm = TRUE)
df
# X1 X2 X3 Skor
#1 1 2 1 1.333333
#2 1 1 NA 1.000000
#3 2 NA 2 2.000000
#4 3 2 2 2.333333
#5 NA 2 1 1.500000
实际上,您可以采用行平均值忽略NA
值
df$Skor <- rowMeans(df, na.rm = TRUE)
df
# X1 X2 X3 Skor
#1 1 2 1 1.333333
#2 1 1 NA 1.000000
#3 2 NA 2 2.000000
#4 3 2 2 2.333333
#5 NA 2 1 1.500000
您可以使用addmargins
:
addmargins(as.matrix(df[,-4]), 2, list(Skor=function(x) mean(x, na.rm=TRUE)))
# X1 X2 X3 Skor
#[1,] 1 2 1 1.333333
#[2,] 1 1 NA 1.000000
#[3,] 2 NA 2 2.000000
#[4,] 3 2 2 2.333333
#[5,] NA 2 1 1.500000
您可以使用addmargins
:
addmargins(as.matrix(df[,-4]), 2, list(Skor=function(x) mean(x, na.rm=TRUE)))
# X1 X2 X3 Skor
#[1,] 1 2 1 1.333333
#[2,] 1 1 NA 1.000000
#[3,] 2 NA 2 2.000000
#[4,] 3 2 2 2.333333
#[5,] NA 2 1 1.500000
rowMeans
方法已经非常简洁,这里是另一个选项
df$Skor <- rowSums(df,na.rm = TRUE)/rowSums(!is.na(df))
df$Skor所采用的rowMeans
方法已经非常简洁,下面是另一个选项
df$Skor <- rowSums(df,na.rm = TRUE)/rowSums(!is.na(df))
df$Skor