gpt4 book ai didi

R:根据向量的顺序对数据框进行排序?

转载 作者:行者123 更新时间:2023-12-05 08:42:58 24 4
gpt4 key购买 nike

这是我的示例数据框

df <- data.frame(id=rep(c(123,456),each=5),col1=c(3,6,4,3,8,9,2,1,3,4),col2=c(7,8,5,4,6,8,7,5,8,3))

id col1 col2
1 123 3 7
2 123 6 8
3 123 4 5
4 123 3 4
5 123 8 6
6 456 9 8
7 456 2 7
8 456 1 5
9 456 3 8
10 456 4 3

desiredOrder <- rep(c(456,123),each=5)

我想根据特定向量 (desiredOrder) 中指定的顺序进行排序,以便输出如下所示:

    id col1 col2
1 456 9 8
2 456 2 7
3 456 1 5
4 456 3 8
5 456 4 3
6 123 3 7
7 123 6 8
8 123 4 5
9 123 3 4
10 123 8 6

(因此 id=456 的行向上移动到 id=123 的行上方,但保留了行的原始顺序)

我试过:

df[match(df$id,desiredOrder),] 

然而,结果与我所追求的相去甚远:

     id col1 col2
6 456 9 8
6.1 456 9 8
6.2 456 9 8
6.3 456 9 8
6.4 456 9 8
1 123 3 7
1.1 123 3 7
1.2 123 3 7
1.3 123 3 7
1.4 123 3 7

最佳答案

我们可以将“id”列转换为 factor,并将 levels 指定为 vector 中的 unique 元素> 然后执行 order

df[order(factor(df$id, levels=unique(desiredOrder))),]
# id col1 col2
#6 456 9 8
#7 456 2 7
#8 456 1 5
#9 456 3 8
#10 456 4 3
#1 123 3 7
#2 123 6 8
#3 123 4 5
#4 123 3 4
#5 123 8 6

关于R:根据向量的顺序对数据框进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36562840/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com