我有一个数据框,看起来像这样:
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 立即使用TRUE
或FALSE
。如何正确排序? 最佳答案
我使用此代码来产生所需的输出。这是你所追求的吗?
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/