我的问题是如何根据字符向量重命名我的列名,同时将向量的顺序施加到我的数据框上。我已经阅读了所有类似的帖子,但没有回应我的问题。
我正在处理一个数据帧,如下所示:
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。然而,这似乎很困难。
幸运的是,我还有一个包含排序的列名的向量:
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相同,并且我只需替换列名。
我怎么才能让它工作呢?如果不可能,还有什么替代方案呢?
提前谢谢。
发布于 2019-05-16 20:43:12
我们可以使用cols对数据框中的列进行重新排序:
df[,cols]这基本上使用了cols的顺序来重新排序我们的数据帧。这可以如下所示:
df[,c("B","A")]
df[,c("A","B")] 如果我们有一个名为cols的向量,并将其设置为c("A","B")或c("B","A"),那么我们就可以使用这个“技巧”来帮助我们重新排序列。
https://stackoverflow.com/questions/56167572
复制相似问题