R - 从两个单独的表中查找列中的公共条目

时间:2014-10-06 06:16:35

标签: r

我对R很新,如果这个问题太过于补救,请提前道歉。我从在线数据库下载了两个表,并希望从两列中识别常见(和唯一)条目。我想比较表“HPMT”中的“Genome”列和表“TS_COG”中的“Specie”列。我的代码如下:

导入表格并识别列:

HMPT=read.table("HMPtable.csv", header = TRUE, sep = ",", fill=TRUE)
GL=HMPT$Genome
TS=read.table("TS_COG.csv", header = TRUE, sep = ",", fill =TRUE )
SPL=TS$Specie

确定两列之间的常用条目:

Same=intersect(GL, SPL)
Same

我已经浏览了>相同的列表并且看起来太短了。我手动浏览了两列,找到了未包含在>中的常用条目。我的格式化或导入表格一定有问题。提前谢谢。

PS

2 个答案:

答案 0 :(得分:2)

帖子中提到的问题的一种可能性是:

GL <- c("A1", "A2 ", " A3")
TS <- c(" A1", "A2 ", "A3", "A4", "A5 ")

intersect(GL,TS)
#[1] "A2 "

您可以使用str_trim删除前导/滞后空格来纠正此问题。

library(stringr)
intersect(str_trim(GL), str_trim(TS))
#[1] "A1" "A2" "A3"

或使用gsub

 GL1 <- gsub("^ +| +$", "", GL)
 TS1 <-  gsub("^ +| +$", "", TS)
 intersect(GL1, TS1)
 #[1] "A1" "A2" "A3"

答案 1 :(得分:0)

为数据框

的特定列指定相同的名称

HMPT$name <- HMPT$Genome TS$name <- TS$Specie

这将列出两列

中的所有常用条目
common <- merge(HMPT, TS, by="name")