我刚刚开始使用 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/