2017-08-10 150 views
0

我從這個網站收到很多幫助我想分享一個我在類似問題中找不到的答案。假設我有兩個數據幀:如何通過R中的另一個數據框對數據框中的列順序進行排序?

df1 = data.frame(X1 = c(1:6), X2 = c(rep("A", 3), rep("B", 3)), X3 = c(3:8)) 
df2 = data.frame(X3 = c(2:7), X1 = c(1:6), X2 = c(rep("C", 3), rep("D", 3))) 

我想根據df1重新排列df2的列。

我知道我可以手動排序DF2:

df2<-df2[c("X1","X2","X3")] 

但我的實際數據幀有30列,我不想包含的所有列名。此外,我不想按字母順序對兩個數據框的列順序進行排序,因爲我想保留df1的列順序。

回答

1

一個技巧是使用的名稱(DF1):

df2<-df2[names(df1)] 

你在這個df1-得到一個相同的集DF2列作爲是非常方便的,如果你需要使用rbind()!

+1

rbind的一個有用的替代方案,你可能希望看看是'dplyr :: bind_rows()'綁定基於列名稱,所以排序不是問題! – roarkz

相關問題