繁体   English   中英

只保留三个数据集中的公共列

[英]Keeping only common columns in three data sets

我有三个数据集。 每个数据集具有不同的维度。 但是每个数据集都有一些共同的列名。 现在我想要三个数据集都具有相同的列名。

df1<-data.frame(c(1,2,3),c(4,5,6),c(7,8,9))
names(df1)<-c("a","b","c")
df2<-data.frame(c(3,2,3),c(4,6,6))
names(df2)<-c("a","b")
df3<-data.frame(c(2,2,3),c(8,5,6),c(7,8,9),c(13,12,11))
names(df3)<-c("a","b","c","d")
## resulting data frames should be
res_df1<-data.frame(c(1,2,3),c(4,5,6))
res_df2<-data.frame(c(3,2,3),c(4,6,6))
res_df3<-data.frame(c(2,2,3),c(8,5,6))

我们可以将所有数据框放在一个列表中,使用Reduce获取公共列名,然后从每个中子集公共列。

list_df <- list(df1, df2, df3)
cols <- Reduce(intersect, lapply(list_df, names))
final_df <- lapply(list_df, `[`, cols)
final_df

#[[1]]
#  a b
#1 1 4
#2 2 5
#3 3 6

#[[2]]
#  a b
#1 3 4
#2 2 6
#3 3 6

#[[3]]
#  a b
#1 2 8
#2 2 5
#3 3 6

如果你想访问这个列表中的单个数据帧,你可以做final_df[[1]]final_df[[2]]等等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM