我有一个相当大的数据集(149个变量中有4000个),我想看一下这些变量的百分位数。我已经能够使用以下代码成功生成忽略NA值的百分位数排名(我相信):
prank <- function(x){
r <- rank(x)/sum(!is.na(x))*100
r[is.na(x)]<-NA
r
}
我的问题是如何自动将此函数应用于我感兴趣的列,返回一个带有排名的新列?我试过这个:
y <- data.frame(x, t(apply(-x,1,prank)))
但是,这似乎将所有内容组合在一起并建立了排名。我基本上希望能够在~100个不同的列上执行以下操作:
y$V5.pr <- prank(x$V5)