如何在R中一次按两列排列行?

smz*_*smz 6 r rank dataframe

以下是基于第v2列排名的代码:

x <- data.frame(v1 = c(2,1,1,2), v2 = c(1,1,3,2))
x$rank1 <- rank(x$v2, ties.method='first')
Run Code Online (Sandbox Code Playgroud)

但我真的想根据v2和/或v1进行排名,因为v2中存在联系.如果不使用RPostgreSQL,我怎么能这样做?

Mat*_*rde 3

怎么样:

within(x, rank2 <- rank(order(v2, v1), ties.method='first'))

#   v1 v2 rank1 rank2
# 1  2  1     1     2
# 2  1  1     2     1
# 3  1  3     4     4
# 4  2  2     3     3
Run Code Online (Sandbox Code Playgroud)

  • 首先,不需要“ties.method”,“order”不会有关系。其次,它因以下数据而失败:`x &lt;- data.frame(v1 = c(2,3,1,2,1), v2 = c(1,1,3,2,1))`,所以它是错了。 (3认同)