重新排列R中的数据帧中的列
问题描述:
我有一个脚本,它通过索引引用某些列而不是名称。有没有办法让一个新的数据集有相同的列重新排列,以适合脚本编写的原始数据框?重新排列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
答
为DF1列的顺序相同,您可以做
df2[names(df1)]
答
> 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
答
如果你决定开始使用data.table
包,还有是一个setcolorder
函数,它的工作原理如下:
setcolorder(df2,names(df1))
?setcolorder
来自:
setcolorder
重新排序的data.table的列,通过引用,所提供的新的订单。
您可以了解更多关于什么是“参照” here的意思,但我只想说,你应该更喜欢这个,如果你已经有了一个大data.frame
,因为它会更快。