我有一个相当大的数据集(4000个obs,149个变量),我想看看这些变量中的许多变量的百分位数排名。我已经能够成功地生成百分位数排名(我相信),忽略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)
1条答案
按热度按时间bzzcjhmw1#
如果您希望百分比等级在0-100区间内,请考虑在r的分母和分母上都减去1:
另一种可能性是x作为具有数值变量的 Dataframe ,以变异为百分位数排名:
或添加了命名列的选项: