我想根据不同的列对数据框中的行进行排序,但我不知道如何实现这一点。这里有一个例子来澄清:
x <- data.frame(X=c(10:1), Y=c(6,6,3,6,3,3,9,9,9,2), L=c("A","B","C","C","A","B","C","A","B","C"))
x
X Y L
1 10 6 A
2 9 6 B
3 8 3 C
4 7 6 C
5 6 3 A
6 5 3 B
7 4 9 C
8 3 9 A
9 2 9 B
10 1 2 C
到 X Y L
1 3 9 A
2 6 3 A
3 10 6 A
4 9 6 B
5 5 3 B
6 2 9 B
7 1 2 C
8 8 3 C
9 7 6 C
10 4 9 C
在此示例中,“A”值按“X”递增排序。带有“B”的值按“X”递减排序,带有“C”的值按“Y”递增排序。这可以通过
order()
来完成吗?或 %>% arrange
?(数据框很大)
谢谢!
最佳答案
您可以使用 order
使用的条件创建一个新向量。 .
y <- x$X
i <- x$L == "B"
y[i] <- y[i] * -1
i <- x$L == "C"
y[i] <- x$Y[i]
x[order(x$L, y),]
# X Y L
#8 3 9 A
#5 6 3 A
#1 10 6 A
#2 9 6 B
#6 5 3 B
#9 2 9 B
#10 1 2 C
#3 8 3 C
#4 7 6 C
#7 4 9 C
关于r - 如何根据不同的列和值在数据框中部分排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67884566/