我正在使用R中的sqldf包。我想创建一个数据集,其学生的ID被排除在另一个数据集之外。我的代码如下:
delete <- sqldf("select distinct ID from A where ...")
B<-sqldf("select * from A where ID not in ('select ID from delete')")
运行代码后,我发现B与A完全相同。似乎sqldf没有识别嵌套的select语句。 任何建议将不胜感激!
答案 0 :(得分:3)
代码存在以下问题:
在显示的代码中实际上没有嵌套选择。该语句请求所有不等于字符串'select ID from delete'
的ID。删除引号。
delete
是一个SQLite关键字。要么为data.frame使用不同的名称,要么在SQL语句中将名称delete
放在引号中,以便它不会将其视为关键字。
下次请以可复制的形式说明问题。请参阅How to make a great R reproducible example?
进行这三项更改后,我们有以下内容,其中A的ID为1,2,3,4,删除的ID为1,2,B的ID为3,4。
library(sqldf)
A <- data.frame(ID = c(1, 1, 2, 3, 4))
delete <- sqldf("select distinct ID from A where ID < 3")
B <- sqldf("select * from A where ID not in (select ID from 'delete')")