使用r sqldf select LIKE对于具有许多ID的子集数据

时间:2019-10-23 11:54:08

标签: sql r sqldf

关于R中的sqldf软件包,我有一个简短的问题。 我想在一列中为不同ID的数据提供子集。这些ID是文章DOI,由于我要过滤期刊,所以我只想对DOI的期刊识别部分进行排序。

这适用于单个ID:

newdata <- sqldf("select * from data where column1 LIKE '%stringcontent%')

扩展程序可用于多种ID类型:

newdata <- sqldf("select * from data where column1 LIKE '%stringcontent1%'
                  or column1 LIKE '%stringcontent2%'
                  or culumn1 LIKE '%stringcontent3%')

是否有可能将stringcontent1,stringcontent2和stringcontent3用作简化命令的向量?我有一个大约200个ID的大型数据集,这比添加每个ID容易得多。

非常感谢您!

1 个答案:

答案 0 :(得分:2)

创建一个字符串目标表,然后将其连接到主表d。我们在末尾的注释中显示了测试表。

library(sqldf)

sqldf("select d.* 
  from data d join target t on d.x like '%' || t.string || '%'")
##                    x
## 1 x stringcontent1 y

这也可以:

sqldf("select d.* from data d join target t on instr(d.x, t.string)")

注意

target <- structure(list(string = c("stringcontent1", "stringcontent2", 
  "stringcontent3")), class = "data.frame", row.names = c(NA, -3L))

data  <- structure(list(x = c("x stringcontent1 y", "xx stringcontent9 yy", 
"def")), class = "data.frame", row.names = c(NA, -3L))