在多个变量中获得对象的各自排名

时间:2018-08-25 11:41:10

标签: r rstudio

这是我的数据的简化显示:

enter image description here

我对德国如何在变量,人口,地区,识字率男性等方面的排名感兴趣。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

您似乎有一个数据框,其中一个变量是国家/地区的名称,其他变量是数字。要获得具有相似结构的易于重现的示例:从内置数据框mtcars开始(详细信息请评估?mtcars),然后运行以下两个命令:

mtcars$make <- row.names(mtcars)
row.names(mtcars) <- NULL

说您想获得Datsun 710的排名(数据帧的第三行)。然后,您可以使用:

ranks <- apply(mtcars[,names(mtcars) != "make"],2,function(v) rank(v)[which(mtcars$make == "Datsun 710")])

结果变量如下:

> ranks
 mpg  cyl disp   hp drat   wt qsec   vs   am gear carb 
24.5  6.0  6.0  7.0 20.0  7.0 23.0 25.5 26.0 21.5  4.0 

在您的情况下,类似

ranks <- apply(df[,names(df) != "location_name"],2,function(v) rank(v)[which(df$location_name == "Germany")])

应该工作。