关于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容易得多。
非常感谢您!
答案 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))