如果 R 中两个数据框中不包含彼此,则从两个数据框中删除列

标签 r

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

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

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

我看过compare packageComparing 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/

相关文章:

从 R 中的矩阵中删除无限值

r - 如何根据特定数字取几行的平均值

r - Smote 无法进行过采样

r - 突出显示 ggplot2 中的特定点

r - R 3.0.x 中的 fill.contour 抛出错误

r - 如何在 levelplot 栅格中标记位置?

r - 时间序列平滑,避免修改

r - 对矩形矩阵 r 中的方 block 进行转置

sql - 使用 R 变量进行 SQL 查询

r - 为什么有序向量并不总是根据 R 中的 "is.ordered"排序?