在R语言学习过程中,常用函数的特殊用法常常会令人困惑。mean()一个普遍的用法是用来求解算术平均数,而同时用其求比例却不易被新手理解,这里记录一下我自己的学习小结。
1、构造一个示例向量
a <- 1:10
> a
[1] 1 2 3 4 5 6 7 8 9 10
2、求算术平均值
> mean(a)
[1] 5.5
3、用mean()+条件求比例
> mean(a>7)
[1] 0.3
这里可以看a>7的比例是被直接求出来的,那么在这个过程中发生了什么呢?实际上是当你输入布尔值后,mean首先将布尔向向量转换成了数值向量,TRUE为1,FALSE为0。然后将sum()作为分子,向量的个数length()作为分母进行运算。这个过程其实就是比例计算的过程。
模拟过程
a>7
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE
>as.numeric(a>7)
[1] 0 0 0 0 0 0 0 1 1 1
> sum(a>7) #分子
[1] 3
> length(a) #分母
[1] 10
> sum(a>7) / length(a)
[1] 0.3
4、其他例子
> a <- 1:10
> mean(a<=6 & a>2)
[1] 0.4
b <- c(NA, "a", "b", NA) #构造向量b
> is.na(b) #检验缺失值
[1] TRUE FALSE FALSE TRUE
> mean(is.na(b)) #查看缺失值占比
[1] 0.5
网友评论