如果R中没有相互包含,则从两个数据框中删除列

时间:2016-04-27 10:19:02

标签: r

我有两个数据框,列数略有不同。

X: col1, col2, col3, col4
Y: col1, col3, col4, col5

所以我想删除x [col2]和y [col5],因为它们与另一帧中的列不匹配。

我查看了compare packageComparing data frames in R Cookbook 但我希望比较列名而不是行内容。

1 个答案:

答案 0 :(得分:0)

您可以在基础包中使用intersect函数来查找重叠的列,并仅选择这些数据帧中的列。示例如下:

X <- data.frame(col1 = rep(c("Single", "Married"), each=10),
              col2 = 41:60 + rnorm(20,sd=3), 
              col3 = 41:60 + rnorm(20,sd=3), 
              col4 = rep(4:8,4))  


Y <- data.frame(col1 = rep(c("Single", "Married"), each=10),
            col3 = 41:60 + rnorm(20,sd=3), 
            col4 = rep(4:8,4),  
            col5 = rep(c("Male", "Female"), each=2))  


cols_to_keep <- intersect(colnames(X),colnames(Y))

X <- X[,cols_to_keep, drop=FALSE]

Y <- Y[,cols_to_keep, drop=FALSE]