2015-07-10 120 views
2

我有一個腳本,它通過索引引用某些列而不是名稱。有沒有辦法讓一個新的數據集有相同的列重新排列,以適合腳本編寫的原始數據框?重新排列R中的數據幀中的列

我想DF2有以下

age = c(20,30,22,32,10) 
gender = c('M','F','M','F','M') 
name = c('A','B','C','D','E') 

df1 = data.frame(age,name,gender) 
df2 = data.frame(gender, name, age) 
> df1 
    age name gender 
1 20 A  M 
2 30 B  F 
3 22 C  M 
4 32 D  F 
5 10 E  M 
> df2 
    gender name age 
1  M A 20 
2  F B 30 
3  M C 22 
4  F D 32 
5  M E 10 

回答

5

爲DF1列的順序相同,您可以做

df2[names(df1)] 
2
> df2[, names(df1)] 
    age name gender 
1 20 A  M 
2 30 B  F 
3 22 C  M 
4 32 D  F 
5 10 E  M 
2

如果你決定開始使用data.table包,還有是一個setcolorder函數,它的工作原理如下:

setcolorder(df2,names(df1)) 

?setcolorder來自:

setcolorder重新排序的data.table的列,通過引用,所提供的新的訂單。

您可以瞭解更多關於什麼是「參照」 here的意思,但我只想說,你應該更喜歡這個,如果你已經有了一個data.frame,因爲它會更快。