【问题标题】:R rank rows according valuesR根据值对行进行排名
【发布时间】:2016-04-05 12:37:31
【问题描述】:

我想对我的数据框中的行进行排序。我尝试过使用 order、sort、rank 和arrange (dplyr),但我找不到合适的脚本。我没有提供我尝试过的脚本,因为它不起作用。

我的数据框示例(ldd):

    days      HDP      CHP      AKP      MHP
   (int)    (dbl)    (dbl)    (dbl)    (dbl)
      1 4901.000 898.0000 12299.00 5394.000
      2 5395.000 646.0000 75309.00 5638.000

想要的结果:

    days      HDP      CHP      AKP      MHP
   (int)    (dbl)    (dbl)    (dbl)    (dbl)
     1        3        4        1        2
     2        2        4        1        3

感谢您的建议。

ldd 数据框:

structure(list(days = 1:31, HDP = c(4901, 5395, 5368, 4858, 4424, 
3927.83333333333, 3652.85714285714, 3358.75, 3171.22222222222, 
2995.6, 3136.45454545455, 3493, 3710.38461538462, 3989.78571428571, 
4143.8, 4413.8125, 4887.47058823529, 4979.16666666667, 5124.31578947368, 
5280.3, 5461.66666666667, 5498.68181818182, 5685.86956521739, 
5805.25, 5803.56, 5838.53846153846, 6024.14814814815, 6333.03571428571, 
7081.13793103448, 7510.3, 8995), CHP = c(898, 646, 557.333333333333, 
586.75, 674.6, 696.5, 698.285714285714, 665.75, 642.222222222222, 
737.2, 897.909090909091, 1231.08333333333, 1593.30769230769, 
5747.78571428571, 6058.46666666667, 5997.0625, 5874.35294117647, 
5817, 5919.73684210526, 5902, 5821.19047619048, 5732.04545454545, 
5760.39130434783, 5783.83333333333, 5777.76, 5762.84615384615, 
5781.14814814815, 5819.25, 5838.75862068965, 5901.4, 6234.09677419355
), AKP = c(12299, 75309, 86964.3333333333, 67210.25, 54871, 47262, 
41899.7142857143, 37116.5, 33301.7777777778, 31218.7, 28921.1818181818, 
27059.3333333333, 25469.5384615385, 24323.2857142857, 23491, 
22451.5625, 21454.5882352941, 20912.8888888889, 20218.4736842105, 
19527.1, 18988.619047619, 18404.2727272727, 17740.5217391304, 
17223.75, 17383.64, 20412.1153846154, 20907.037037037, 22194.9642857143, 
23105.4482758621, 23493.1666666667, 23399.0322580645), MHP = c(5394, 
5638, 5261.33333333333, 4614.75, 5017.6, 4976.16666666667, 4887, 
4537.125, 4417.22222222222, 4655.4, 4727, 4817.41666666667, 4892.84615384615, 
4974.14285714286, 5002.06666666667, 5188.5, 5410.23529411765, 
5510.61111111111, 5700.52631578947, 5725.6, 5800.52380952381, 
5765.09090909091, 5780.95652173913, 5935.33333333333, 5939.76, 
6049.30769230769, 6166.37037037037, 6256.32142857143, 6381, 6625.03333333333, 
6848.90322580645)), .Names = c("days", "HDP", "CHP", "AKP", "MHP"
), class = c("tbl_df", "data.frame"), row.names = c(NA, -31L))

【问题讨论】:

    标签: r sorting dplyr rank


    【解决方案1】:

    你可以试试rank

    t(apply(df[-1], 1, function(x) rank(-x)))
    
    
    #      HDP CHP AKP MHP
    #[1,]    3   4   1   2
    #[2,]    3   4   1   2
    #[3,]    2   4   1   3
    #[4,]    2   4   1   3
    #[5,]    3   4   1   2
    #[6,]    3   4   1   2
    #[7,]    3   4   1   2
    #[8,]    3   4   1   2
    #[9,]    3   4   1   2
    #[10,]   3   4   1   2
    #[11,]   3   4   1   2
    #[12,]   3   4   1   2
    #[13,]   3   4   1   2
    #[14,]   4   2   1   3
    #[15,]   4   2   1   3
    #[16,]   4   2   1   3
    #[17,]   4   2   1   3
    #[18,]   4   2   1   3
    #[19,]   4   2   1   3
    #[20,]   4   2   1   3
    #[21,]   4   2   1   3
    #[22,]   4   3   1   2
    #[23,]   4   3   1   2
    #[24,]   3   4   1   2
    #[25,]   3   4   1   2
    #[26,]   3   4   1   2
    #[27,]   3   4   1   2
    #[28,]   2   4   1   3
    #[29,]   2   4   1   3
    #[30,]   2   4   1   3
    #[31,]   2   4   1   3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-15
      • 2013-07-21
      • 1970-01-01
      • 2021-08-19
      相关资源
      最近更新 更多