我有一个脚本,它通过索引引用某些列而不是名称。有没有办法让一个具有相同列的新数据集以一种适合编写脚本的原始数据框的方式重新排列?
我希望df2与下面的df1具有相同的列顺序
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
答案 0 :(得分:5)
你可以做到
{{1}}
答案 1 :(得分: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 :(得分:2)
如果您决定开始使用data.table
软件包,那么setcolorder
函数就是这样的:
setcolorder(df2,names(df1))
来自?setcolorder
:
setcolorder
通过引用将data.table列重新排序到提供的新订单。
您可以通过参考"更多地了解"的含义。 here,但是如果你有一个大 data.frame
,那么你应该更喜欢这个,因为它会更快。