我有两个数据框,列数略有不同。
X: col1, col2, col3, col4
Y: col1, col3, col4, col5
所以我想删除x [col2]和y [col5],因为它们与另一帧中的列不匹配。
我查看了compare package和Comparing data frames in R Cookbook 但我希望比较列名而不是行内容。
答案 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]