【On Spss】——数据导入
→excel+文本+数据库文件←
〈摘要〉
三类数据类型都可以用语法导入, SPSS向导读取文本文件通常也有2种方式,一种是用“.”、“tab”、”空格”或其他字符作为变量划分,另一种则是采用固定宽度,很多从数据库系统中导出的文件通常都是这种形势,没有像空格等分隔符将各变量细分开来。
用syntax语句读取数据库格式文件。
〈同类系列贴〉
〖On Spss〗相关的哲学——典型相关
〈excel文件导入〉
SPSS作为一款数据分析软件,其实并不适合作数据录入。目前,多数市场调研公司都使用EpiData软件作问卷录入,然后再将录入结果导入SPSS中,而对于互联网公司而言,更多的是使用数据库或.CSV格式文件,SPSS默认读取的文件类型有11种,本篇先从读取EXCEL格式文件说起。
GUI操作向导方式读取
SPSS读取EXCEL格式文件采用向导的方式操作非常简单,文件—打开—数据—EXCEL数据文件格式类型等,向导操作唯一值得注意的地方是表格与范围的选择以及是否从EXCEL表首行读取变量名。向导读取EXCEL文件的界面流程参见下图:
如何一次读取多个EXCEL工作表内容?
如果要读取多张EXCEL表单的数据又该如何操作呢?(注:这里的多个EXCEL表格必须在同一个工作薄中),其原理其实是将一个EXCEL工作薄当作一个数据库,然后利用数据库读取的方式读取,关于SPSS如何从数据库中读取文件以后再详细介绍,这里可以先看看如下范例:
GET DATA
/TYPE=ODBC
/CONNECT=
'DSN=ExcelFiles;DBQ=c:\examples\data\sales.xls;' +
'DriverId=790;MaxBufferSize=2048;PageTimeout=5;'
/SQL =
'SELECT Location$.[Store Number], State,Region, City,'
' Power, Hand, Accessories,'
' Tires, Batteries, Gizmos, Dohickeys'
' FROM [Location$], [Tools$], [Auto$]'
' WHERE [Tools$].[StoreNumber]=[Location$].[Store Number]'
' AND [Auto$].[StoreNumber]=[Location$].[Store Number]'.
上面的代码和从数据库中读取表数据完全一样,只是在/CONNECT语句上做了些许变化,其他的并无区别,当然重点还是后面的提取数据变量语句/SQL,这里要说明的是如果提取变量字符中含有空格的话就需要用[ ]给框起来了,正如上面示例代码所示。
另外,不得不提的是从多表中读取数据较从单表中读取数据的一些局限性,比如不能像单表一样随意选择数据读取范围;读取表中的第一行非空字符都将强制读取为SPSS中的变量;变量类型较单一,只提供了数字和字符两种数据类型等等。
TIPs:不管采用何种方式读取EXCEL文件,一定要注意变量格式问题。
〈文本文件导入〉
介绍SPSS如何读取文本格式文件。
对于SPSS而言,文本格式文件分为两种:一种是格式结构比较单一的简单文本文件;另一种则是形式结构交复杂的文本文件,比如2纬表,字段顺序不一致等,而SPSS向导读取文本文件通常也有2种方式,一种是用“.”、“tab”、”空格”或其他字符作为变量划分,另一种则是采用固定宽度,很多从数据库系统中导出的文件通常都是这种形势,没有像空格等分隔符将各变量细分开来。
Gui向导操作
对于文本格式文件,GUI向导操作能满足常规的文本文件读取要求,从菜单栏选择读取文本格式文件到SPSS文档形成,一共经过九个步骤,其中文本数据读取向导共六步,依次为:
② 文本导入向导:此步骤可以设定预制格式
② 变量排序格式选择,分隔符或是固定宽度以及变量名的读取情况;
③ 分隔,选择读取变量起始位置以及读取变量数目数;
④ 分隔符的选择以及文本限定符的选择
⑤ 变量名称以及变量类型的设定
⑤ 文件保存与语法保存设定
注意:
1) 读取文本格式文件时一定要注意变量类型
2)当变量字符的宽度超过8192时,需要用file handle设定变量宽度,否则将会出现缺失
〈数据库导入〉
前面两篇分别介绍了SPSS读取EXCEL格式和文本格式数据,本篇介绍SPSS如何利用syntax语句读取数据库格式文件,至此,SPSS读取数据部分的内容介绍完毕,同时也因为个人电脑相关软件的缺失,关于SPSS软件读取数据库格式数据这部分内容主要来自IBM SPSS官方文档的翻译,更多详情大家可以参见原文件。
SPSS读取数据库格式文件前提说明
利用SPSS从数据库中读取相应的数据,必须有相应的数据库驱动,如果是在网络服务器数据库中读取数据则在远程服务器上必须装有对应的数据库驱动。ODBC驱动适合以下数据库:
Ø ACCESSØ Btrueve
Ø DB2
Ø dBASE
Ø EXCEL
Ø FoxPro
Ø Informix
Ø Oracle
Ø Paradox
Ø Progress
Ø SQL Base
Ø Sybase
从数据库从读取单个表格数据
如果你是你一次使用SPSS读取数据库文件,建议你使用向导操作,然后在操作的最后一步将对应的语法paste到syntax窗口即可,尽管这个语法的SQL语句非常繁杂,但也省去了你输入麻烦的connect语句的过程。单张表格的变量、观测值数据和SPSS数据表中数据结构是一样的,所以从数据库中读取单个表格数据是非常简单的。例如,从Access数据库中读取单个表格数据,其语法如下:
- GET DATA /TYPE=ODBC /CONNECT=
- 'DSN=Microsoft Access;DBQ=c:\xxxx\xxxxx\001.mdb;'+
- ' DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;'
- /SQL = 'SELECT * FROM CombinedTable'.
- EXECUTE.
当然,我们也可以只读取数据库表中的部分数据,这个时候你只需要修改一下SQL语句部分即可,例如:
- GET DATA /TYPE=ODBC /CONNECT=
- 'DSN=MS Access Database;DBQ=C:\xxx\xxxx\001.mdb;'+
- 'DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;'
- /SQL =
- 'SELECT Age, Education, [Income Category]'
- ' FROM CombinedTable'
- ' WHERE ([Marital Status] <> 1 AND Internet=1)'.
- EXECUTE.
从数据库从读取多个表格数据
在读取多表数据前,你需要了解在数据库中表的几种联合方式:
1) 内部联合:
2) 左外部联合:第一个表中的所有记录将出现在合并记录中
3) 右外部联合:和左外部联合正好相反
当然,左外部联合与右外部联合通常出现的情况较少。事情情况较多的还是内部联合的情况,对于SPSS读取数据库格式数据最重要的还是掌握SQL语言。关于读取多表的范例如下:
- *access_multtables1.sps.
- GET DATA /TYPE=ODBC /CONNECT=
- 'DSN=MS Access Database;DBQ=C:\examples\data\dm_demo.mdb;'+
- 'DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;'
- /SQL =
- 'SELECT * FROM DemographicInformation, SurveyResponses'
- ' WHERE DemographicInformation.ID=SurveyResponses.ID'.
- EXECUTE.
——中国统计网