我正在使用以下查询读取 R 中的 SQL 表:
data = sqlQuery(con, "select * from Quant.dbo.Indiv_data where Date > '19020101'", stringsAsFactors = FALSE, as.is = TRUE, na.string = "NULL", nullstring = "NA")
使用as.is
is 不强制转换任何原始列类型,并保持 SQL 表的列类型不变。唯一的问题是 SQL 表中的“NULL”单元格没有得到正确处理,我得到以下结果:
Date issueid ReturnBA VAL EQ EFF SIZE FSCR MSCR SY
1 1984-12-31 00:00:00.000 00101601 .136539672 45.200000000 71.400000000 47.750000000 1.295611077 <NA> <NA> .019447467
2 1984-12-31 00:00:00.000 00105401 .023985560 57.800000000 48.800000000 18.500000000 2.296439211 <NA> <NA> -.005433357
3 1984-12-31 00:00:00.000 00109801 -.094036769 60.200000000 56.800000000 79.200000000 1.858392810 <NA> <NA> -.451707020
4 1984-12-31 00:00:00.000 00112401 -.006317470 46.400000000 64.800000000 54.250000000 1.900126698 <NA> <NA> .009264280
5 1984-12-31 00:00:00.000 00116601 .124830071 <NA> 76.200000000 48.500000000 2.070191229 <NA> <NA> <NA>
6 1984-12-31 00:00:00.000 00117801 .010923909 25.500000000 29.000000000 40.666666667 2.200806054 <NA> <NA> -.005433421
请注意,“NULL”单元格被转换为<NA>
,而不是NA
。为了尝试处理这种情况,我尝试了以下方法:
data = sqlQuery(con, "select * from Quant.dbo.Indiv_data where Date > '19020101'",
stringsAsFactors = FALSE, as.is = TRUE, na.string = "NULL", nullstring = "NA")
但是,这会将每个 NULL 单元格设置为字符串 NA而不是符号 NA
。换句话说,如果您以 的 为例data$VAL[5]
,它在 SQL 表中最初为 NULL,然后执行以下操作:
is.na(data$VAL[5])
你得到FALSE
但是当
data$VAL[5] == "NA"
你得到TRUE
在使用in时,如何使NULL
SQL 表NA
中的所有单元格都在 R 的数据框中?as.is
sqlQuery()
谢谢,