从R中的sql文件中选择NA值



我用以下代码在R中读取sql表

library(RSQLite)
setwd("C:/Users/Cat/Downloads")
drv = dbDriver("SQLite")
# Use the driver to connect to a particular sqlite database file
con = dbConnect(drv, "cartype")
dbListTables(con)

在Sale表中,有一些列被命名为ID和credit。一些信用卡丢失了,我可以用下面的代码来选择它们。

wow = dbGetQuery(con, 'SELECT DISTINCT ID FROM Sale WHERE
                 credit IS NOT "NA";')

问题是如何选择日期为NA的ID?我试过代码

wow = dbGetQuery(con, 'SELECT DISTINCT ID FROM Sale WHERE
                 credit IS "NA";')

wow = dbGetQuery(con, 'SELECT DISTINCT ID FROM Sale WHERE
                 credit == "NA";')

代码有效,但给出了一个错误的结果,即有0个结果符合条件,而它应该有100多个NA信用的ID。

有人能帮我吗,告诉我如何用NA信用卡获取身份证?谢谢

我认为您遇到了一个关于如何在数据库中存储缺失的错误理解。这些通常存储为NULL,而不是NA。

您的第一个语句之所以有效,是因为它将某种类型的列(例如,date、int、varchar)与字符串("NA")进行比较,这将排除NULL,因为字符串比较(无论是隐式还是显式)将始终排除遗漏,并且由于您的所有日期都与"NA"不同,它将返回所有未遗漏的记录。

您的第二条和第三条语句进入返回0条记录的原因是,它再次进行字符串比较,这将排除NULL,也找不到匹配项。

对于SQLite,有一个关于如何处理NULL的好页面,它可能会帮助您了解有关此主题的更多详细信息:http://sqlite.org/nulls.html

最新更新