我刚刚开始使用 R,我想知道如何从数据框的两行中找到元素的交集。我试过了
intersect(thing[1,],thing[2,])
但它给了我一个完全胡说八道的答案(绝对不在十字路口的东西,而忽略了在十字路口的东西)。
我应该如何解决这个问题?
我刚刚开始使用 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”对于级别变量和数值变量可能具有完全不同的含义,因此我们不应该比较数值变量和级别变量,至少在没有仔细监督的情况下是这样。
对于数据框有几种不同类型的场景,可能有一个巧妙的解决方案,但什么都没有想到......