【问题标题】:Sort a dataframe with an external dataframe with identical values in R [duplicate]使用R中具有相同值的外部数据框对数据框进行排序[重复]
【发布时间】:2020-07-10 08:49:27
【问题描述】:

我有两个数据框

> sel
    rank x1 x2 x3  sel
1      1  0  0  0 TRUE
101  101  0 10  0 TRUE
201  201  0 20  0 TRUE
301  301  0 30  0 TRUE
401  401  0 40  0 TRUE
501  501  0 50  0 TRUE
601  601  0 60  0 TRUE
701  701  0 70  0 TRUE
801  801  0 80  0 TRUE
901  901  0 90  0 TRUE

和

rank_order_1000$rank
   [1]      1  10001  20001  30001  40001  50001  60001  70001  80001  90001 100001 110001 120001
  [14] 130001 140001 150001 160001 170001 180001 190001 200001 210001 220001 230001 240001 250001
  [27] 260001 270001 280001 290001 300001 310001 320001 330001 340001 350001 360001 370001 380001

sel 的 rank 列包含与 rank_order_1000$rank 数据框相同的值。我想根据 rank_order_1000$rank 数据框的顺序对 sel 数据框进行排序。我尝试了在 Stack Overflow 上看到的许多选项,但没有一个能提供我想要的输出。有人知道吗?

【问题讨论】:

    标签: r


    【解决方案1】:

    你可以使用match:

    sel[match(sel$rank, rank_order_1000$rank), ]
    

    这里使用了一个可重现的小例子:

    sel <- data.frame(x = letters[1:5], rank = c(2, 3, 1, 4, 5))
    sel
    #  x rank
    #1 a    2
    #2 b    3
    #3 c    1
    #4 d    4
    #5 e    5
    rank_order_1000 <-  data.frame(rank  = c(4, 3, 1, 2, 5))
    rank_order_1000
    #  rank
    #1    4
    #2    3
    #3    1
    #4    2
    #5    5
    
    sel[match(sel$rank, rank_order_1000$rank), ]
    
    #  x rank
    #4 d    4
    #2 b    3
    #3 c    1
    #1 a    2
    #5 e    5
    

    【讨论】:

    • 谢谢!我在 dplyr 的“订单”功能和“安排”功能上浪费时间。不知道“匹配”
    猜你喜欢
    • 2021-06-25
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    • 2021-10-29
    • 2021-08-03
    • 1970-01-01
    相关资源
    最近更新 更多