0

我正在使用 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 语句。任何建议,将不胜感激!

4

1 回答 1

3

代码有这些问题:

  1. 在显示的代码中实际上根本没有嵌套选择。该语句正在请求所有不等于 string 的 ID 'select ID from delete'。删除引号。

  2. delete是一个 SQLite 关键字。为您的 data.frame 使用不同的名称或将名称delete放在 SQL 语句中的引号中,以便它知道不将其视为关键字。

  3. 下次请以可重复的形式陈述问题。请参阅如何制作出色的 R 可重现示例?

进行这三个更改后,我们得到以下内容,其中 A 的 ID 为 1,2,3,4,delete 的 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')")
于 2013-05-30T10:14:12.370 回答