r - 如何根据不同的列和值在数据框中部分排序?

标签 r dataframe partial-ordering

我想根据不同的列对数据框中的行进行排序,但我不知道如何实现这一点。这里有一个例子来澄清:

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/

相关文章:

regex - 删除一定长度的单词之间的空格

r - ggplot2:翻转轴并保持数据的纵横比

R 数据框 : add values in common rows

python - 如何获取pyspark数据框中具有最大值的列的名称

python-3.x - 根据 Pandas 中的同比变化和上一年的值计算多列的当前值

scala - 为什么 scala.math.PartialOrdering.lteq 是抽象的,而不是根据 .tryCompare 定义的?

c++ - 具有未推断上下文的函数模板的部分排序

r - 访问 R 中对象中的列表(轮廓函数)

c++ - 是否对参与偏序的类型执行实例化

r - ggplot2 + 绘图 : Axis title disappear