找到至少两个数据集中常见的字符串

时间:2014-10-09 13:38:47

标签: r set intersection

我有4个数据集(a,b,c,d),我想找到至少有两个数据集中存在的字符串。我的数据如下:

 head(a)
[1] MLH3      PCSK7     PKMYT1    C14orf132 ANP32A    POLQ     
1634 Levels: AARS ABAT ABCA8 ABCC9 ABCE1 ABHD3 ABHD5 ABL1 ABLIM1 ACADVL ACAN ACAT2 ACBD3     ACD ACLY ACOT2 .
head(b)
[1] ZCCHC10  DYNLL1   ERBB2IP  C17orf75 BUB1B    PLK1    
 1311 Levels: AASDHPPT ABAT ABCA6 ABCG1 ABI1 ACAA1 ACACB ACO2 ACOX1 ACSL1 ACSL3 ACSL4     ACTR6 ADAMTS1 ADCYAP1R1 ... ZRANB2
head(c)
[1] UBE2Q1    PCSK9     ZDHHC11   GMDS      PPP2R3B   C20orf117
1247 Levels: ABCC2 ABCC5 ABCF1 ABCG1 ABHD14B ABHD5 ABL1 ABLIM2 ABTB2 ACAD8 ACD ACO1 ACOT9 ACSL3 ACSS2 ACTA2 ... ZYG11B
head(d) 
[1] UBE2Q1    PCSK9     ZDHHC11   GMDS      PPP2R3B   C20orf117
1247 Levels: ABCC2 ABCC5 ABCF1 ABCG1 ABHD14B ABHD5 ABL1 ABLIM2 ABTB2 ACAD8 ACD ACO1 ACOT9 ACSL3 ACSS2 ACTA2 ... ZYG11B

我正在考虑使用R

中的intersect()函数

1 个答案:

答案 0 :(得分:3)

您可以在四个向量中创建一个唯一元素的列表,然后返回重复的元素,这些元素是出现在两个或多个向量中的元素:

all.vals <- c(unique(a), unique(b), unique(cc), unique(d))
unique(all.vals[duplicated(all.vals)])
# [1] "UBE2Q1"    "PCSK9"     "ZDHHC11"   "GMDS"      "PPP2R3B"   "C20orf117"

请注意,我将您的第三个向量重命名为cc,因此您没有覆盖内置函数c

a <- c("MLH3", "PCSK7", "PKMYT1", "C14orf132", "ANP32A", "POLQ")
b <- c("ZCCHC10", "DYNLL1", "ERBB2IP", "C17orf75", "BUB1B", "PLK1")
cc <- c("UBE2Q1", "PCSK9", "ZDHHC11", "GMDS", "PPP2R3B", "C20orf117")
d <- c("UBE2Q1", "PCSK9", "ZDHHC11", "GMDS", "PPP2R3B", "C20orf117")