2015-07-10 90 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,因为它会更快。