我有一个数据框,看起来像这样:

    P1  P2  P3  T1  T2  T3  I1  I2
1   2   3   5   52  43  61  6   "b"
2   6   4   3   72  NA  59  1   "a"
3   1   5   6   55  48  60  6   "f"
4   2   4   4   65  64  58  2   "b"

我想按降序对I1进行排序,并按升序对I1中具有相同值的行按I2进行排序,以1 3 4 2的顺序获取行。但是order函数似乎只接受一个decreasing参数,然后对所有排序 vector 立即使用TRUEFALSE。如何正确排序?

最佳答案

我使用此代码来产生所需的输出。这是你所追求的吗?

rum <- read.table(textConnection("P1  P2  P3  T1  T2  T3  I1  I2
2   3   5   52  43  61  6   b
6   4   3   72  NA  59  1   a
1   5   6   55  48  60  6   f
2   4   4   65  64  58  2   b"), header = TRUE)
rum$I2 <- as.character(rum$I2)
rum[order(rum$I1, rev(rum$I2), decreasing = TRUE), ]

  P1 P2 P3 T1 T2 T3 I1 I2
1  2  3  5 52 43 61  6  b
3  1  5  6 55 48 60  6  f
4  2  4  4 65 64 58  2  b
2  6  4  3 72 NA 59  1  a

关于r - 如何按一降一升列排序数据帧?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7793295/

10-12 18:04