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

时间:2013-12-03 11:27:21

标签: sql r

我在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\";')

问题是如何选择ID为NA的ID?我尝试了代码

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

OR

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

代码有效,但结果不正确,结果与条件匹配的结果为0,而NA信用额应超过100个。

任何人都可以帮助我,并告诉我如何获得NA学分的ID? 谢谢!

1 个答案:

答案 0 :(得分:1)

我认为你正在反对对错误存储在数据库中的错误态度。这些通常存储为NULL而不是NA。

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

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

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