R版本:2.12.2 / OS:Windows XP
我需要查询和操作的数据存储在SPSS .sav文件中(大小约112MB),我对SPSS语法有基本的了解 . 我更熟悉R(并且通常更喜欢它用于数据操作和分析),因此我将SPSS文件保存为制表符分隔文件(大小约为85MB),并尝试使用RODBC软件包中的功能进行查询 .
使用Windows控制面板上“管理工具”组中的“数据源(ODBC)”应用程序,我设置了一个数据库(Windows文件夹),其中包含带有Microsoft文本驱动程序的表(制表符分隔文件) .
当前感兴趣的表有一个'Date'字段(称为'DateTime'),其中日期格式为'%Y /%m /%d' . 当我第一次尝试使用此字段的条件查询数据库时,我返回了一个零观察结果集 . 所以,我将'DateTime'更改为数据类型'Character'并再次尝试我的查询(无济于事) .
我能够成功查询数据库,即
sqlQuery(channel = cn, query = "SELECT * FROM large_table.txt", as.is = TRUE, stringsAsFactors = FALSE, max = 20)
返回结果 . 以下查询返回结果集,观察结果为零(我已经确认在'DateTime'字段中至少有一条记录的值为'2011/04/01' .
sqlQuery(channel = cn, query = "SELECT DateTime FROM large_table.txt WHERE DateTime = {d '2011-04-01'}", as.is = TRUE, stringsAsFactors = FALSE)
sqlQuery(channel = cn, query = "SELECT DateTime FROM large_table.txt WHERE DateTime = '2011/04/01'", as.is = TRUE, stringsAsFactors = FALSE)
谁能告诉我为什么结果集没有观察结果?
任何改进我的数据库连接或查询的建议都非常感谢 . 我更喜欢使用RODBC包而不是其他数据库查询包,但我愿意在必要时尝试新的东西 .
2 回答
我会使用'memisc'包 . 为3个SPSS文件设置spss.system.file()导入程序,使用memisc版本将子集加载到R只需要的变量,包括处理用户缺失的级别 .
关于如何设置SPSS文件存在一些奇怪之处 - 对于具有数字变量的SPSS文件来说,设置用户缺失是相当频繁的,这可能需要在R端对具有适当NA的间隔缩放进行排序 .
通过将SPSS文件直接读入R,您可以省去很多麻烦 .
这将返回一个data.frame,您可以使用所有常规R工具进行分析 .
作为附带好处,您还将在data.frame的属性中包含问卷文本 .
有关详细信息,请参阅
?read.spss
.