我有一个包含多个数据框的列表.除了一个或多个具有其他变量的列之外,每个数据框都具有相同的列名.我从另外related question个数据框中提取了这个示例数据.
age <- c(20,30,22,32,10)
gender <- c('M','F','M','F','M')
name <- c('A','B','C','D','E')
salary <- c('800','400','300','670','790')
resident <- c('X','Y','Z','W','U')
ownership <- c('Yes','No','Yes','No','No')
df1 <- data.frame(age,name,gender,salary)
df2 <- data.frame(gender,name,age,resident,ownership)
> df1
age name gender salary
1 20 A M 800
2 30 B F 400
3 22 C M 300
4 32 D F 670
5 10 E M 790
> df2
gender name age resident ownership
1 M A 20 X Yes
2 F B 30 Y No
3 M C 22 Z Yes
4 F D 32 W No
5 M E 10 U No
mylist <- list(df1, df2)
如何重新排列列表中的每个数据框,以使数据集之间有固定的相互列顺序(姓名、性别、年龄),后跟不在数据框中相互共享的其他列?
我知道如何 for each 数据框安排列,但不确定如何为列表安排列.以及如何在每次不命名列的情况下执行此操作.
#if I rearrange column individually
df1 <- df1[, c("name", "gender", "age", "salary")]
#if I try by naming the mutual column, this will only select not arrange
col_arrangement <- c("name", "gender", "age")
df1 <- df1[, names(df1) %in% c(col_arrangement, "salary")]
这些数据框之所以在列表中,是为了稍后将它们全部写入单独的Excel工作簿(有人告诉我,使用R列表比对单个数据框进行更改要好,但我根本不擅长使用列表).遗憾的是,我每次都会重新排列Excel工作簿中每个工作表中的列.
我想要的输出是一个包含排列列的数据框的列表.
> df1
name age gender salary
1 A 20 M 800
2 B 30 F 400
3 C 22 M 300
4 D 32 F 670
5 E 10 M 790
> df2
name age gender resident ownership
1 A 20 M X Yes
2 B 30 F Y No
3 C 22 M Z Yes
4 D 32 F W No
5 E 10 M U No