京公网安备 11010802034615号
经营许可证编号:京B2-20210330
spss读取数据syntax语句
生活中,我们常常因为这样或那样的事情而需要从一个城市到另外一个城市。旅途前,我们需要考虑旅途中的各个环节,比如说确定旅行方式(水、陆、空的选择),交通工具的选择及出行站点、出行车次(航班)等等。而把各种形式的数据按照自己的要求转换为SPSS格式数据,就好比我们从一个城市到另一个城市,而SPSS格式的数据就是我们的目的地。

和现实生活一样,利用Syntax将各种形式的数据转换为我们所需的SPSS格式数据也需要我们像旅途一样考虑一些细节问题。例如:我们从一个数据库文档中读取我们所需的数据,首先确定SPSS与数据库间采用何种连接方式(ODBC或JDBC),然后确定采集的数据来自何种数据库(Oracle,DB2,SQL SERVER,ACCESS等),接下来就是确定类似出发站点、车次等一系列细节问题。这样说来好像有点玄乎,下面将结合实例,看Syntax是如何一步一步的从数据库、EXCEL、TXT等格式文档中提取数据。
一、从数据库中读取数据
由于从数据库中读取数据需要输入的代码比较繁琐,一般来说先利用菜单向导操作,在结束前利用Paste将操作大致代码导入Syntax编辑窗口中,然后再根据自己的需要对代码做适当的修改。例如:
GET DATA ***告诉SPSS你此行的目的,得到数据***.
/TYPE=ODBC ***接下来就是选择海陆空了,omgd!是ODBC****.
/CONNECT= ***交通工具的选择及细节,利用交通工具将两地连起来就有了CONNECT***.
'DSN=Microsoft Access;DBQ=c:\mydocuments\dm_demo.mdb;'+ (通常这些细节都利用向导直接生成)
' DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;'
/SQL = 'SELECT * FROM CombinedTable'.
***上面安置完毕,到达目的地了,/SQL就好比你到目的地后所做之事***.
EXECUTE.
上面Syntax的作用是将ACCESS数据库中CombinedTable表中所有数据导入SPSS,上面Syntax语句中红色标注的可以说是此语句的核心部分,①、/connect子语句说明从何种数据库从提取数据及提取相关细节,此过程通常由向导生成,一般需要用时复制-粘贴即可;②、/SQL子语句相比/CONNECT语句则是重中之重,也是此次旅途的终极目的。如果从2个不同的表中选取变量,则是
/SQL =
'SELECT * FROM [table1],[table2]'
' WHERE [conditions]'.
还有select与group by,order by,having 等语句联合运用的情况,更多SQL语法知识则需参考数据库相关书籍(这也是目前许多公司要求做数据分析的懂数据库的原因之一)。
注:单纯从数据库中提取数据并不需要太多数据库知识,单纯了解SQL查询语言就可以了,个人建议读读《SQL循序渐进》。
二、从EXCEL格式文件中读取数据
利用Syntax语句从EXCEL中读取数据并没有太多的技巧,数据读取过程可以简单的分为2类,一类是读取单表数据,另一类则是读取多表数据(与从数据库中读取数据语法类似,只是/CONNECT语句稍有不同)。首先简单的说说第一类从单表中读取数据,例如:从我的文档中读取名叫data的EXCEL工作薄中表salary的[A3:H160]的数据,且将读取数据的第一行作为变量名,其Syntax代码如下:
get data ***①告诉SPSS,你的目的—得到数据(get data)***.
/type=xls ***②读的数据是什么类型(XLS OR XLSM<EXCEL2007>)***.
/file="C:/mydocuments/data.xls". ***③告诉SPSS文档的位置***.
/sheet=name 'salary' ***④告诉SPSS你要读取那个表(缺失时自动读取第一个表)***.
/cellrange=range 'A3:H160' ***⑤告诉SPSS你要读取表中那些数据***.
/readnames=on. ***⑥将读取数据的第一行设置为变量名***.
上面语法明确的表达你的意图,再联系我们在旅途中的种种行为,这个语句就轻而易举的被攻克了。值得一提的是,上面语句中的④⑤⑥三个子语句都可省略,省略后SPSS将从工作薄中第一个表读取所有数据,并将第一行默认为变量名,如果第一行为空,变量名则默认为VAR1,VAR2……,这一过程和利用菜单向导操作效果一样,下面说说怎样从多个表中读取数据,例如:
GET DATA
/TYPE=ODBC
/CONNECT=
'DSN=Excel Files;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$].[Store Number]=[Location$].[Store Number]'
' AND [Auto$].[Store Number]=[Location$].[Store Number]'.
上面的代码和从数据库中读取表数据完全一样,只是在/CONNECT语句上做了些许变化,其他的并无区别,当然重点还是后面的提取数据变量语句/SQL,这里要说明的是如果提取变量字符中含有空格的话就需要用[ ]给框起来了,正如上面示例代码所示。 另外,不得不提的是从多表中读取数据较从单表中读取数据的一些局限性,比如不能像单表一样随意选择数据读取范围;读取表中的第一行非空字符都将强制读取为SPSS中的变量;变量类型较单一,只提供了数字和字符两种数据类型等等。
三、从TXT格式文件中读取数据
利用向导从TXT格式文件从读取数据有时候会因数据格式整洁而很方便,有时又会因为格式混乱而使你后面的分析工作变的麻烦,而利用代码则可以一次解决这种问题。通常读取文本格式数据语句分为get data和data list两种,采用何种语句完全凭个人喜好,当然两种方式各有所长,比如CSV文件或是很大的容量的文本数据用get data较data list就方便的多,而在处理程序内数据(begin data……end data)或结构相对较复杂的数据时用data list语句则较get data语句更方便些。根据文本数据格式,data list语句又有data list free/list/fixed之分,这里不便一一道来,通常一般的TXT格式的数据我们很少遇到,这里主要说说从网站数据库中导出的CSV格式的数据转换情况,例如,我们从网站中导出如下CSV格式的数据dara.csv:
ID,Name,Gender,Date Hired,Department
1,"Foster, Chantal",f,10/29/1998,1
2,"Healy, Jonathan",m,3/1/1992,3
3,"Walter, Wendy",f,1/23/1995,2
4,"Oliver, Kendall",f,10/28/2003,2
下面我们将像旅途一样将此csv格式的数据转换为我们所需的.sav格式,
get data ***①告诉SPSS,你的目的***.
/type=txt ***②告诉SPSS你要乘车还是坐船***.
/file='c:/mydocuments/data.csv' ***③找到车站码头***.
/delimiters= "," ***④司机强调路上安全(数据用","分隔)***.
/qualifier='" ' ***⑤司机介绍如何处理突发事故(比如数据中包含空格,逗号等特殊情况)***.
/arrangement=delimited ***⑥其他注意情况(限制情况)***.
/firstcase=2 ***⑦找到自己的座位(从第2行开始读取数据)***.
/variables= ID F3 Name A15 Gender A1
Date_Hired ADATE10 Department F1. ***⑧到了目的地确定适宜(设定变量名及格式)***.
此次Syntax旅途暂告一段落,当然还有许多其他格式的数据,这里不一一列举,但通常都可以像旅途一样实行转换目的。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
CDA数据分析师 出品 作者:李诗怡 一、数据分析四大思维 1. 对比思维:没有对比就没有分析 核心观点:单独一个数字没有意义,有 ...
2026-10-05Kimball 是方法,星型模型是它产出的形状。 很多人把"Kimball vs 星型模型"当成一道选择题——这本身就是个误会:Kimball 是动词 ...
2026-10-05写在开头 老板在微信上甩来一句: "帮我看下为什么销量跌了。" ” 你回工位,打开 SQL,开始写。查订单表、拉近三个月、按 ...
2026-10-03CDA数据分析师 出品 作者:李诗怡 1. 事实表 vs 维度表 对比维度 事实表 维度表 核心问题 记录“业务发生了什么事” 描述 ...
2026-10-02做数据聚合时,PySpark的groupBy()确实能完成统计,这也是它的本职工作。但它有一个根本性局限:每一组数据,最终只能返回一行 ...
2026-10-01热力地图是数据可视化中极具辨识度与实用性的空间分析图表,结合地理空间维度与数据密度特征,通过颜色深浅、色阶渐变直观展示数 ...
2026-09-30 很多数据分析师做过按月份的销售额趋势图,画过按天的流量折线图,但当被问到“时间序列和普通数据有什么本质区别”“季节性 ...
2026-09-30同样是“银行数据岗”,在国有大行总行数据中心、在一家城商行的零售部、在银行系金融科技子公司、在保险公司,工作内容、成长节 ...
2026-09-29在数据分析与统计学研究中,数据往往不是独立存在的,不同变量之间普遍存在相互关联、相互影响的关系。相关性统计分析是挖掘变量 ...
2026-09-29 导读:大多数人只把 dataclasses 当成偷懒工具,用来少写 __init__、__repr__ 这类魔法方法。但它的能力远不止于此。本文带 ...
2026-09-29 很多数据分析师能熟练地计算指标、搭建标签体系,但当被问到“画像到底在解决什么问题”“画像和标签是什么关系”“画像如何 ...
2026-09-29在MySQL数据库运维与业务开发中,行业普遍存在“数据达到千万级就必须分表”的说法。但在实际生产环境中,千万条数据并不是强制 ...
2026-09-28CDA数据分析师 出品 作者:李诗怡 1. 5W1H 分析法 定义:经典系统性思维框架,通过六个核心维度对问题进行全方位拆解与剖析,确 ...
2026-09-28 很多分析师在设计标签时思路清晰,但真到落地环节却面临“数据在手,不知如何转化为可用标签”的困境:或因加工方式选择不当 ...
2026-09-28CDA数据分析师 出品 作者:李诗怡 1. 用户标签体系 定义: 通过一系列高度精炼的特征标识,对用户属性、行为与偏好进行量化刻画 ...
2026-09-24Pandas是Python生态中用于表格数据处理的核心库,广泛应用于数据清洗、统计运算、报表输出、数据分析建模等场景。在处理极大数值 ...
2026-09-24随着数字经济快速发展,数据已成为核心生产要素,各行各业的业务沉淀、用户行为、设备运行、市场交易均产生海量数据。数据处理作 ...
2026-09-24 很多分析师每天和数据打交道,但当被问到“标签是什么”“标签和指标有什么区别”“标签体系如何设计”时,却常常答不上来。 ...
2026-09-24在时序数据分析中,大部分业务数据并非持续平稳变化,而是会在某些时间节点出现突然抬升、断崖下跌、趋势反转、波动异变等现象, ...
2026-09-23在统计学与数据分析中,研究多组数据差异最常用的方法为单因素方差分析与事后多重比较。很多数据分析初学者容易混淆两者功能,认 ...
2026-09-23