我有两个数据框,其列数略有不同。
X: col1, col2, col3, col4
Y: col1, col3, col4, col5
所以我想删除 x[col2] 和 y[col5],因为它们与另一个框架中的列不匹配。
我看过compare package和 Comparing data frames in R Cookbook 但我希望比较列名称而不是行内容。
最佳答案
您可以使用基础包中的 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]
关于如果 R 中两个数据框中不包含彼此,则从两个数据框中删除列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36886972/