仅过滤R中多列的唯一值

时间:2016-02-17 10:40:37

标签: r database filter

我有这样的数据:

X <- data.frame(fac_1 = c("A", "B", "C", "X", "Y"), fac_2 = c("B", "X", "P", "Q", "C"), fac_3 = c("C", "P", "Q", "T", "U"))

    fac_1 fac_2 fac_3
     A     B     C
     B     X     P
     C     P     Q
     X     Q     T
     Y     C     U

我只想要那些常见的字母

(1)fac_1和fac_2之间(如B,C,X)和

(2)fac_1,fac_2和fac_3之间共有的所有因素(仅限C)

1 个答案:

答案 0 :(得分:2)

您可以使用intersect

intersect(intersect(X$fac_1, X$fac_2), X$fac_3)
#[1] "C"
intersect(X$fac_1, X$fac_2)
#[1] "B" "C" "X"

或者,可以按照@docendo discimus在评论部分所描述的那样使用函数Reduce

Reduce(intersect, X)
#[1] "C"