首页 文章

查询SPSS文件

提问于
浏览
0

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 回答

  • 3

    我会使用'memisc'包 . 为3个SPSS文件设置spss.system.file()导入程序,使用memisc版本将子集加载到R只需要的变量,包括处理用户缺失的级别 .

    关于如何设置SPSS文件存在一些奇怪之处 - 对于具有数字变量的SPSS文件来说,设置用户缺失是相当频繁的,这可能需要在R端对具有适当NA的间隔缩放进行排序 .

  • 2

    通过将SPSS文件直接读入R,您可以省去很多麻烦 .

    library(foreign)
    dat <- read.spss("filename.sav", to.data.frame=TRUE)
    

    这将返回一个data.frame,您可以使用所有常规R工具进行分析 .

    作为附带好处,您还将在data.frame的属性中包含问卷文本 .

    有关详细信息,请参阅 ?read.spss .

相关问题