繁体   English   中英

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

[英]Selecting NA values from sql file in 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\";')

问题是如何选择日期为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个以上不带信用的ID。

谁能帮助我,并告诉我如何获得具有NA信用额的ID? 谢谢 !

我认为您对误解如何存储在数据库中产生了误解。 这些通常存储为NULL,而不是NA。

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

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

对于SQLite,有一个很棒的页面介绍了如何处理NULL,这可能会帮助您更详细地了解此主题: http : //sqlite.org/nulls.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM