三行代码  ›  专栏  ›  技术社区  ›  Jorge Paredes

以接近值顺序排列数据帧-R

  •  0
  • Jorge Paredes  · 技术社区  · 1 周前

    假设您有以下数据帧:

    > dummy
       index ARMA             ME
    1      4  2,3 -0.00764558073
    2      4  3,1 -0.00017109916
    3      4  3,2 -0.00038884805
    4      4  3,3 -0.00246287881
    5      3  1,3 -0.00004263228
    6      1  0,1  0.00046965874
    7      1  0,2  0.00105372919
    8      1  1,0  0.00018798497
    9      1  2,1  0.00112475686
    10     1  2,2 -0.00121912970
    11     1  3,0  0.00181957426
    

    ARMA列是某种ID。 此数据集按索引从4到1排列(降序)

    我想按索引排列数据集(降序) 首先是最接近0的ME值

    因此,这将是期望的输出:

    > dummy
       index ARMA             ME
    1      4  3,1 -0.00017109916
    2      4  3,2 -0.00038884805
    3      4  3,3 -0.00246287881
    4      4  2,3 -0.00764558073
    5      3  1,3 -0.00004263228
    6      1  1,0  0.00018798497
    7      1  0,1  0.00046965874
    8      1  0,2  0.00105372919
    9      1  2,1  0.00112475686
    10     1  2,2 -0.00121912970
    11     1  3,0  0.00181957426
    

    提前谢谢!!


    数据:

    > dput(dummy)
    structure(list(index = c(4L, 4L, 4L, 4L, 3L, 1L, 1L, 1L, 1L, 
    1L, 1L), ARMA = c("2,3", "3,1", "3,2", "3,3", "1,3", "0,1", "0,2", 
    "1,0", "2,1", "2,2", "3,0"), ME = c(-0.00764558072775317, -0.000171099162494111, 
    -0.000388848046105807, -0.00246287880997775, -0.0000426322805130549, 
    0.000469658740281779, 0.001053729189345, 0.000187984966060834, 
    0.00112475685730634, -0.00121912969696577, 0.00181957426209449
    )), row.names = c(NA, -11L), class = "data.frame")
    
    1 回复  |  直到 1 周前
        1
  •  1
  •   r2evans    1 周前
    dummy[ order(-dummy$index, abs(dummy$ME)), ]
    #    index ARMA             ME
    # 2      4  3,1 -0.00017109916
    # 3      4  3,2 -0.00038884805
    # 4      4  3,3 -0.00246287881
    # 1      4  2,3 -0.00764558073
    # 5      3  1,3 -0.00004263228
    # 8      1  1,0  0.00018798497
    # 6      1  0,1  0.00046965874
    # 7      1  0,2  0.00105372919
    # 9      1  2,1  0.00112475686
    # 10     1  2,2 -0.00121912970
    # 11     1  3,0  0.00181957426