根据另一个变量的顺序在R中创建新变量

时间:2020-05-12 17:38:49

标签: r

我正在尝试根据数据帧中另一个变量的值顺序将另一列添加到R中的数据帧,对于该变量,许多行具有相同的值。因此,我希望这个新列实质上是上一列的序数版本,所有具有相同列的最低行中的所有行均分配为1,依此类推。有没有简单的方法可以做到这一点?

(此处附带的数据只是前几行,没有重复,但是完整的数据集共有75个唯一值,超过100.000个观察值)

…   Value
1   0.6215278
2   0.5801653
3   0.5287239
4   0.5267176
5   0.5295736
6   0.5422419
7   0.5269841
8   0.5302013
9   0.5017794

2 个答案:

答案 0 :(得分:2)

frank的另一个选项

library(data.table)
frank(x, ties.method = 'dense')

数据

x <- c(1, 1, 2, 3, 3, 4)

答案 1 :(得分:1)

您正在寻找rank函数。听起来好像您希望使用参数ties.method = "min",但有关其他选项,请参见帮助页面。这将留下空白,例如,如果2个条目并列第一,则下一个将获得3级...

x = c(1, 1, 2, 3, 3, 4)
rank(x, ties.method = "min")
# [1] 1 1 3 4 4 6

如果您不希望出现间隙,请使用dplyr::dense_rank

dplyr::dense_rank(x)
# [1] 1 1 2 3 3 4