我正在尝试在 R 中编写一个百分位等级函数,但由于向量中缺少值,我在使用rank()
and命令时遇到了麻烦。length()
这是我的代码:
percentile.rank <- function(x) rank(x) / length(x)
percentile_mathscore <- percentile.rank(mathscore)
这并没有给我我需要的答案,因为向量x
包含许多缺失值,所以length(x)
andrank(x)
命令没有返回相关数字。有没有办法获得忽略缺失值的排名和长度?
我想出了一种方法来做到这一点,但这有点靠蛮力:
percentile.rank2 <- function(x){
x2 <- na.omit(x)
return(rank(x, na.last = NA, ties.method = "random")/length(x2))
rm(x2)
}
percentile_mathscore2 <- percentile.rank2(mathscore)
这里的问题是我需要向量长度与向量长度percentile_mathscore2
相同mathscore
(即,有一个NA
in的地方mathscore
,我想要一个NA
in percentile_mathscore
)。