R:如何找到数据帧两行元素的交集?

标签 r set-operations

我刚刚开始使用 R,我想知道如何从数据帧的两行中找到元素的交集。我试过了

intersect(thing[1,],thing[2,])

但它给了我一个完全无意义的答案(肯定不在交叉点中的东西,同时省略了在交叉点中的东西)。

我应该如何解决这个问题?

最佳答案

如果列都是相同类型(例如,都是数字),首先通过 as.matrix 转换为矩阵,然后应用 intersect。例如,如果数据框名为 z:

zz <- as.matrix(z)
intersect(zz[1,], zz[2,])

如果列具有不同类型的变量,则可能需要首先确定哪些列实际上是可比较的,因为您不想将级别变量与整数进行比较。例如:

z <- data.frame(AA = c( 1,   1,   3,   4), 
                BB = c( 1,   5,   3,   1),
                CC = c('1', 'a', 'b', 'b'),
                DD = c( 1,   2,   3,   4)
z[z[,1] == z[,3],1]

虽然此处将返回“1”,但“1”对于级别变量和数值变量可能具有完全不同的含义,因此我们不应该比较数值变量和级别变量,至少不应该这样做认真监督。

对于数据框有几种不同类型的情况,可能有一个巧妙的解决方案,但什么也没有想到......

关于R:如何找到数据帧两行元素的交集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9592350/

相关文章:

r - 从翻转对象中提取交叉点列表

r 返回给定列中每个值的公共(public)行

r - 使用sets包对R中的集合列表进行集合操作

r - 在 R 中同时解决单变量优化问题

r - 在ggplot2中对齐轴并与多图轴标签

r - 创建具有透明颜色ggplot2的boxplots

r - 使用对预先存在的向量的引用创建 data.table

r - 将具有一列所有值的数据框合并为一个

java - O(m+n) 次的并、交、差大 IntSet

mysql - 在相关/查找表上选择不相关的 ID