【发布时间】:2010-07-07 19:09:52
【问题描述】:
我正在尝试按人口和日期对该数据框进行排序,因此我使用了 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
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
但实际上,我想要一个具有同等人口排名的同等排名的数据框,如下所示:
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
如何用 R 解决这个问题?使用自定义 ties.method() 或其他 R 技巧?
【问题讨论】:
-
那么 ties = min, or max, or average... 他们都保持 tie 的排名相同。
-
对于 min 和 x2 1 1 2 3
-
或者,使用
max并从结果中减去平局数?2 2 3 4-1=1 1 2 3。现在,问题是要弄清楚联系的数量......无论如何,我只是通过谷歌偶然发现了这个线程。
标签: sorting select r ranking dataframe