gpt4 book ai didi

R:按列名的向量对数据框的列进行排序

转载 作者:行者123 更新时间:2023-12-04 09:24:46 25 4
gpt4 key购买 nike

我有一个data.frame看起来像这样:

其中有1000多个名称相似的列。

我有一个列名称的向量,看起来像这样:

该向量按cluster_id(最多为11)排序。

我想对数据框中的列进行排序,以使列按向量中名称的顺序排列。

我想要的一个简单示例是:

数据:

 A    B    C
1 2 3
4 5 6

向量:
c(“B”,“C”,“A”)

排序:
 B    C    A
2 3 1
5 6 4

有没有一种快速的方法来做到这一点?

最佳答案

Brodie的答案完全符合您的要求。但是,您暗示您的数据很大,因此我将使用“data.table”提供替代方法,该方法具有一个称为setcolorder的函数,该函数将通过引用更改列顺序。

这是一个可重现的示例。

从一些简单的数据开始:

mydf <- data.frame(A = 1:2, B = 3:4, C = 5:6)
matches <- data.frame(X = 1:3, Y = c("C", "A", "B"), Z = 4:6)
mydf
# A B C
# 1 1 3 5
# 2 2 4 6
matches
# X Y Z
# 1 1 C 4
# 2 2 A 5
# 3 3 B 6

提供证明Brodie的答案有效的证据:
out <- mydf[matches$Y]
out
# C A B
# 1 5 1 3
# 2 6 2 4

显示一种执行相同操作的内存效率更高的方法。
library(data.table)
setDT(mydf)
mydf
# A B C
# 1: 1 3 5
# 2: 2 4 6

setcolorder(mydf, as.character(matches$Y))
mydf
# C A B
# 1: 5 1 3
# 2: 6 2 4

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

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