我正在为一个由5个表和近10年的数据组成的SQL数据库创建一个缺失矩阵。我建立了ODBC连接,并使用R中的RODBC包作为我的工作环境。我正在尝试编写一个函数,它将为每个表输出每年的行数,给定表中给定年份的空值的计数和百分比(值不存在),以及丢失的计数和百分比(问题跳过/未回答)给定表的值。我正在使用下面的代码,尝试让它在一个变量上运行,然后在它运行后将其转换为函数。但是,当我运行此代码(见下文)时,它似乎无法正常工作,我认为问题在于为null,NA
的字符分配一个整数值。我在尝试列出函数中的变量时收到此消息:
as.environment(pos)出错:没有名为“22018 245 [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]的项目将varchar值'NA'转换为数据类型int时转换失败。”在搜索列表上。
此外,当我尝试查找函数的环境时,R返回NULL
。我不一定要为已经存在的变量分配新值,而且我是SQL的新手,但我想尝试沿着这些行If X = 'NA'
然后Y = 1
其他0
做一些事情。当我尝试运行最后2行创建百分比变量时,我收到以下错误消息:
eval中的错误(substitute(expr),data,enclos = parent.frame()):'character'类型的'envir'参数无效
有什么见解?
test1< - sqlQuery(channel,“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)
答案 0 :(得分:0)
我相信您的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]