使用 RODBC 包计算空值和缺失值(以及区分两者)时出现问题
Trouble counting null and missing values (and differentiating between the two) using RODBC package
我正在为 SQL 数据库创建一个缺失矩阵,该数据库由 5 table 和将近 10 年的数据组成。我已经建立了 ODBC 连接并使用 R 中的 RODBC 包作为我的工作环境。我正在尝试编写一个函数,该函数将输出每个 table 每年的行数,给定 table 的给定年份中空值(不存在的值)的计数和百分比,以及给定 table 的缺失值(问题 skipped/not 已回答)的计数和百分比。我正在使用下面的代码,试图让它在一个变量上工作,然后在它工作后将其转换为一个函数。但是,当我 运行 这段代码(见下文)时,它似乎无法正常工作,我认为问题在于为 null NA
字符分配整数值。尝试在函数中列出变量时收到此消息:
Error in as.environment(pos) : no item called "22018 245 [Microsoft][ODBC SQL Server Driver][SQL Server]Conversion failed when converting the varchar value 'NA' to data type int." on the search list.
此外,当我尝试查找函数的环境时,R returns NULL
。我不一定要为已经存在的变量分配一个新值,而且我是 SQL 的新手,但我正在尝试按照这些行做一些事情 If X = 'NA'
然后 Y = 1
其他 0
。当我尝试 运行 最后两行创建百分比变量时,我收到以下错误消息:
Error in eval(substitute(expr), data, enclos = parent.frame()) : invalid 'envir' argument of type 'character'
有什么见解吗?
test1 <- sqlQuery(通道, "select
[EVENT_YEAR] AS 'YEAR',
COUNT(*) AS 'TOTAL',
SUM(CASE WHEN MOTHER_EDUCATION_TRENDABLE = 'NA' THEN 1 ELSE 0 END) AS 'NULL_VAL',
SUM(CASE WHEN MOTHER_EDUCATION_TRENDABLE = -1 THEN 1 ELSE 0 END) AS 'MISS_VAL'
from [GA_CMH].[dbo].[BIRTHS]
GROUP BY [EVENT_YEAR]
ORDER BY [EVENT_YEAR]")
test1$nullpct<-with(test1, NULL_VAL/TOTAL)
test1$misspct<-with(test1, MISS_VAL/TOTAL)
我认为您的列 MOTHER_EDUCATION_TRENDABLE 的数据类型是整数,如果是,请尝试:
select
[EVENT_YEAR] AS 'YEAR',
COUNT(*) AS 'TOTAL',
SUM(CASE WHEN MOTHER_EDUCATION_TRENDABLE IS NULL THEN 1 ELSE 0 END) AS 'NULL_VAL',
SUM(CASE WHEN MOTHER_EDUCATION_TRENDABLE = -1 THEN 1 ELSE 0 END) AS 'MISS_VAL'
from [GA_CMH].[dbo].[BIRTHS]
GROUP BY [EVENT_YEAR]
ORDER BY [EVENT_YEAR]
</pre>
<p>
我正在为 SQL 数据库创建一个缺失矩阵,该数据库由 5 table 和将近 10 年的数据组成。我已经建立了 ODBC 连接并使用 R 中的 RODBC 包作为我的工作环境。我正在尝试编写一个函数,该函数将输出每个 table 每年的行数,给定 table 的给定年份中空值(不存在的值)的计数和百分比,以及给定 table 的缺失值(问题 skipped/not 已回答)的计数和百分比。我正在使用下面的代码,试图让它在一个变量上工作,然后在它工作后将其转换为一个函数。但是,当我 运行 这段代码(见下文)时,它似乎无法正常工作,我认为问题在于为 null NA
字符分配整数值。尝试在函数中列出变量时收到此消息:
Error in as.environment(pos) : no item called "22018 245 [Microsoft][ODBC SQL Server Driver][SQL Server]Conversion failed when converting the varchar value 'NA' to data type int." on the search list.
此外,当我尝试查找函数的环境时,R returns NULL
。我不一定要为已经存在的变量分配一个新值,而且我是 SQL 的新手,但我正在尝试按照这些行做一些事情 If X = 'NA'
然后 Y = 1
其他 0
。当我尝试 运行 最后两行创建百分比变量时,我收到以下错误消息:
Error in eval(substitute(expr), data, enclos = parent.frame()) : invalid 'envir' argument of type 'character'
有什么见解吗?
test1 <- sqlQuery(通道, "select
[EVENT_YEAR] AS 'YEAR',
COUNT(*) AS 'TOTAL',
SUM(CASE WHEN MOTHER_EDUCATION_TRENDABLE = 'NA' THEN 1 ELSE 0 END) AS 'NULL_VAL',
SUM(CASE WHEN MOTHER_EDUCATION_TRENDABLE = -1 THEN 1 ELSE 0 END) AS 'MISS_VAL'
from [GA_CMH].[dbo].[BIRTHS]
GROUP BY [EVENT_YEAR]
ORDER BY [EVENT_YEAR]")
test1$nullpct<-with(test1, NULL_VAL/TOTAL)
test1$misspct<-with(test1, MISS_VAL/TOTAL)
我认为您的列 MOTHER_EDUCATION_TRENDABLE 的数据类型是整数,如果是,请尝试:
select
[EVENT_YEAR] AS 'YEAR',
COUNT(*) AS 'TOTAL',
SUM(CASE WHEN MOTHER_EDUCATION_TRENDABLE IS NULL THEN 1 ELSE 0 END) AS 'NULL_VAL',
SUM(CASE WHEN MOTHER_EDUCATION_TRENDABLE = -1 THEN 1 ELSE 0 END) AS 'MISS_VAL'
from [GA_CMH].[dbo].[BIRTHS]
GROUP BY [EVENT_YEAR]
ORDER BY [EVENT_YEAR]
</pre>
<p>