我有一个数据集如下:
Class Age
A 20
A 27
B 30
C 31
我将类存储在变量即cl=c("A","B")
现在只想要这个类的所有记录:
Out=sqldf(paste0("SELECT * from Data where Class in '","(","'",g,"'",")")
但我只为最后一节获得了记录,即B
。
如何获取Class
变量中所有cl
的记录?
答案 0 :(得分:0)
1)请参阅?fn
(在由sqldf自动提取的gsubfn中)和sqldf github主页,以便使用fn$
执行字符串插值。< / p>
library(sqldf)
cl <- c("A", "B")
fn$sqldf("SELECT * from Data where Class in (`toString(shQuote(cl))`) ")
2)或查看生成的SQL,首先将其存储在变量中。
sql <- fn$c("SELECT * from Data where Class in (`toString(shQuote(cl))`) ")
sqldf(sql)
3)或将要替换的部分放在变量CL
中,然后使用fn&#39; s $表示法来引用变量:
CL <- toString(shQuote(cl))
sql <- fn$c("SELECT * from Data where Class in ($CL) ")
sqldf(sql)
Lines <- "
Class Age
A 20
A 27
B 30
C 31"
Data <- read.table(text = Lines, header = TRUE)