首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据排序不同的字符向量替换dataframe中的列名

根据排序不同的字符向量替换dataframe中的列名
EN

Stack Overflow用户
提问于 2019-05-16 19:31:02
回答 1查看 315关注 0票数 2

我的问题是如何根据字符向量重命名我的列名,同时将向量的顺序施加到我的数据框上。我已经阅读了所有类似的帖子,但没有回应我的问题。

我正在处理一个数据帧,如下所示:

代码语言:javascript
运行
复制
df<- data.frame(q3= c(1,4,6,1), q12=c(5,3,2,4), q11=c(1,2,3,4), q1=c(5,6,4,5),q5= c(1,4,6,1), q9=c(5,3,2,4), q10=c(1,2,3,4), q4=c(5,6,4,5),q2= c(1,4,6,1), q7=c(5,3,2,4), q6=c(1,2,3,4), q8=c(5,6,4,5))

理想情况下,我希望根据索引对这些列进行排序,即q1、q3、q78、q99。然而,这似乎很困难。

幸运的是,我还有一个包含排序的列名的向量:

代码语言:javascript
运行
复制
cols<- c("q1", "q2", "q3", "q4","q5", "q6", "q7", "q8","q9", "q10", "q11", "q12")

将数据框列名称替换为cols显然是不正确的,因为它们的顺序不同。因此,到目前为止,我所达到的是:

colnames(df) <- match(colnames(df), cols)

df <- df[,order(names(df))]

它将colnames(df)替换为cols中发现后者的位置,但显然我不能对这些数字进行排序,因为R不会将它们视为整数(因为R不允许将数字作为变量的名称)。如果我能做到这一点,那么df的顺序将与cols相同,并且我只需替换列名。

我怎么才能让它工作呢?如果不可能,还有什么替代方案呢?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-16 20:43:12

我们可以使用cols对数据框中的列进行重新排序:

代码语言:javascript
运行
复制
df[,cols]

这基本上使用了cols的顺序来重新排序我们的数据帧。这可以如下所示:

代码语言:javascript
运行
复制
df[,c("B","A")]
df[,c("A","B")] 

如果我们有一个名为cols的向量,并将其设置为c("A","B")c("B","A"),那么我们就可以使用这个“技巧”来帮助我们重新排序列。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56167572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档