rey*_*n64 7 sorting select r ranking dataframe
我正在尝试按人口和日期排序这个数据框,所以我正在使用order()
和rank()
函数:
> df <- data.frame(idgeoville = c(5, 8, 4, 3, 4, 5, 8, 8),
date = c(rep(1950, 4), rep(2000, 4)),
population = c(500, 450, 350, 350, 650, 500, 500, 450))
> df
idgeoville date population
1 5 1950 500
2 8 1950 450
3 4 1950 350
4 3 1950 350
5 4 2000 650
6 5 2000 500
7 8 2000 500
8 8 2000 450
Run Code Online (Sandbox Code Playgroud)
随着ties.method = "first"
我没有问题,最后我生产这种数据帧:
idgeoville date population rank
1 5 1950 500 1
2 8 1950 450 2
3 4 1950 350 3
4 3 1950 350 4
5 4 2000 650 1
6 5 2000 500 2
7 8 2000 500 3
8 8 2000 450 4
Run Code Online (Sandbox Code Playgroud)
但实际上,我想要一个具有相同排名的数据帧,以获得相同的人口排名,如下所示:
idgeoville date population rank
1 5 1950 500 1
2 8 1950 450 2
3 4 1950 350 3
4 3 1950 350 3
5 4 2000 650 1
6 5 2000 500 2
7 8 2000 500 2
8 8 2000 450 3
Run Code Online (Sandbox Code Playgroud)
如何用R解决这个问题?使用自定义ties.method()
或其他R技巧?
我相信没有任何选择可以通过等级来做到这一点;这是一个自定义函数,可以执行您想要的操作,但如果您的数据很大,它可能会太慢:
Rank<-function(d) {
j<-unique(rev(sort(d)));
return(sapply(d,function(dd) which(dd==j)));
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3932 次 |
最近记录: |