京公网安备 11010802034615号
经营许可证编号:京B2-20210330
前面几篇读书笔记介绍了SAS的基本概念和语言构成,从本篇开始将和大家一起学习SAS的数据管理功能。
1. SAS数据步的运行机制
data a;
put x= y= z=;
input x y;
z=x+y;
put x= y= z=;
cards;
10 20
100 200
;
run;
运行结果
x=. y=. z=.
x=10 y=20 z=30
x=. y=. z=.
x=100 y=200 z=300
x=. y=. z=.
NOTE: 数据集 WORK.A 有 2 个观测和 3 个变量。
从这个例子可以看出SAS数据步程序和普通程序的一个重大区别:SAS数据步如果有数据输入,比如用INPUT、SET、MERGE、UPDATE、MODIFY等语句读入数据,则数据步中隐含了一个循环,即数据步程序执行到最后一个语句后,会返回到数据步内的第一个可执行语句开始继续执行,直到读入数据语句(INPUT、SET、MERGE、UPDATE、MODIFY等)读入了数据结束标志为止才停止执行数据步,并把读入的各个观测写入在DATA语句中指定的数据集。如果没有数据输入而只是直接计算,则数据步程序不需要此隐含循环。
从原始数据输入要使用input语句,数据的行写在cards语句和一个只有一个顶头的分号的行之间。
例如:自由格式
data a;
input name $ sex $ math chinese;
cards;
黎明 男 98 97
张红 女 94 98
;
run;
如果各数据行的各个数据项是上下对齐的,还可以使用INPUT语句的列方式。这时,除了在INPUT关键字后面列出变量名外,还需要在每个变量名(及$符)后面列出该变量在数据行中所占据的起始位置与结束位置。
列方式不要求数据项之间分开,所以经常用来输入紧缩格式的数据。比如,我们要输入一批身份证号码,但只输入其中的出生年、月、日信息,就可以用如下程序
如果需要完全原样地输入字符型数据(包括头尾空格、单独的小数点),可以用有格式输入,即在字符型变量名和$符后加上一个输入格式如CHAR1O.表示读入10个字符。
有特殊格式的数据需要用有格式输入,即在变量名后加格式名。其中最常见的是用来输入日期。数据中的日期写法经常是多种多样的,比如1998年10月9日可以写成"1998-10-9","19981009","9/10/98"等等,为读入这样的日期数据就需要为它指定特殊的日期输入格式。另外,日期数据在SAS中是按数值存储的,所以如果要显示日期值,也需要为它指定特殊的日期输出格式。例如:
变量的属性包括:
(1)字符型还是数值型。INPUT语句读入字符型数据时要在变量名后面加$符。
(2)变量标签(LABEL)。可以给变量加一个长度不超过40个字符的标签(可以用汉字,不超过20个汉字),标签可以用在以后的报表中。
(3)变量存储长度(LENGTH)。数值型数据一般长度为8字节,也可以对取值范围小的变量规定较小的长度以节省存储空间。字符型变量长度为其能存储的字符个数,缺省为8个字节
数据步中的ATTRIB语句可以指定变量的这些属性。格式为:ATTRIB 变量名 属性 变量名 属性…;
可以同时指定多个变量的属性。属性为"属性名=属性值"这样的写法,可以为一个变量同时指定多个属性。见如下的例子
文本格式:把原始数据放在一个普通的文本格式的文件中,然后用INFILE语句指定输入文件名。例如,我们可以把数据行单独生成一个文本文件aa.txt,假设放在了f:\中,可以用如下程序读入文件中的数据并生成数据集:
data zz;
infile 'f:\aa.txt';
input name $ sex $ age;
run;
proc print;
run;
注意INFILE语句要写在INPUT语句之前,有INFILE语句就不再有CARDS语句和空语句。INFILE关键字后面跟的是一个包含文件名的字符串,可以使用全路径名,如果只有文件名则在当前工作目录寻找。
微机格式的数据文件
可以使用SAS系统File菜单中的Import命令读入其它格式的文件。并且可以将操作步骤的程序保存下来留着下次用。
与大型数据库的接口
SAS提供了两种办法可以访问大型数据库。SAS/ACCESS 可以直接连接Oracle、SYbase、SQLServer等大型数据库。为了访问储存在这些数据库中的表,需要对数据库中的表在SAS中建立访问描述文件(access descriptor),和视图描述文件(view descriptor)。例如,在数据库服务器DBIN中有一个数据库Finance,其中有一个表Sales,用户名guest用密码anyone可以访问此库,就可以用以下程序在SAS中建立访问描述文件和视图文件:
其中大写的部分是固定的。这段程序首先生成了访问描述文件SASUSER. SALES. ACCESS,然后由此访问描述文件生成了视图文件SASUSER. SALESALL.VIEW。在SAS中视图文件和数据集的使用是一样的,可以使用数据集的地方都可以使用视图文件。
可以用SET语句把一个已有数据集复制到一个新数据集,同时还可以进行修改。如果只是复制数据集,也可以用SAS管理器(SAS Explorer)完成。比如要把数据集WORK.C9501复制为数据集SASUSER.CLS,只要用如下程序:
data sasuser.cls;
set c9501;
run;
在复制的同时我们还可以用SAS程序语句对生成的数据集进行修改。比如,我们把超过100分的语文成绩都改为100分,就可以用如下程序:
data c9501a;
set c9501;
if chinese>100 then chinese=100;
run;
在数据步中可以用KEEP语句或DROP语句指定要保留的变量或要丢弃的变量。
也可以指定一个条件取出数据集的某些行组成的子集。比如,我们希望取出数学分数90分以上,语文分数100分以上的学生的观测,可以用如下的"子集IF语句":
在用SET语句引入数据集时可以给引入的数据集加选项,选项放在数据集名后的括号内:
数据集名(数据集选项)
选项包括KEEP=,表示引入时只要指定的变量;DROP=,表示不引入指定的变量;OBS=,表示读取观测时读到指定的序号为止(是序号而不是观测数);FIRSTOBS=,表示从指定序号的观测开始读取而跳过之前的观测不读。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
CDA数据分析师 出品 作者:李诗怡 1. VLOOKUP:按行跨区域找数据(最常用) 作用:在指定的表格或数据区域的第一列里找目标值, ...
2026-10-23数据敏感度不是天赋,也不是“看一眼数字就能发现问题”的直觉。对市场专员来说,它更接近一套可练习的工作习惯:看到投放ROI、 ...
2026-10-23市场营销专员转数据分析,不是从零重来。你已有的渠道投放、活动执行、线索跟进经验,本身就是分析工作的原料——缺的不是业务理 ...
2026-10-23先说结论:市场岗位并非必须考数据分析证书。招聘方更常看的是你能否把渠道效果、活动ROI、线索转化这些业务问题讲清楚,证书只 ...
2026-10-23市场分析师的职场知识提升,最怕两件事:一是把“学工具”当成学习本身,Excel、SQL、Python轮着学一遍,回到工作里还是不知道怎 ...
2026-10-23市场分析师的通用技能可以归为五块:业务与市场理解、调研与竞品分析、用户与渠道数据分析、指标与分析表达、工具操作。它们不是 ...
2026-10-23市场分析师的核心技能,可以先用一个框架回答:懂业务与市场、能取数与处理数据、会指标与分析方法、能把洞察讲清楚。这四块是共 ...
2026-10-23市场策划不是“会写文案、能办活动”这么简单。它本质上是一个用创意和资源撬动业务结果的岗位:先理解市场和人群,再形成方案, ...
2026-10-23社群运营不是“拉群、发通知、维护气氛”这么简单。它真正要对的结果是:用户进得来、留得住、愿意互动、最终产生转化或复购。因 ...
2026-10-23营销人的能力提升计划,最容易做成一张课程清单:报名几门课、读完几本书、考一个证,年底回头看,工作方式却没变。问题不在努力 ...
2026-10-23人力资源专员的职场价值,不由“做了多少事”决定,而由“解决什么问题、留下什么成果”决定。同样做招聘、算考勤、办入离职,有 ...
2026-10-23产品经理的职场价值,不主要由会画原型、会写文档决定,而由能否用业务结果证明自己的判断与推动决定。同一岗位的人价值差距大, ...
2026-10-23运营专员的能力提升,最容易走偏成两件事:一是把市面上所有工具都学一遍,二是把沟通、协作这类通用能力当成唯一答案。更有效的 ...
2026-10-23市场总监的沟通与管理,难点通常不在话术,而在三件事能否同时成立:向上用结论和数据对齐目标,平级用共同指标换取协同,向下用 ...
2026-10-23市场分析师的沟通失分,往往不是“嘴笨”,而是三件事没做好:结论没提炼出来、指标口径没对齐、建议没有落到决策上。所以提升沟 ...
2026-10-23社群运营做久了,很容易陷入一种忙碌:每天在群里发内容、回消息、做活动,热闹的时候很热闹,可一到月底复盘,说不清哪些动作带 ...
2026-10-23品牌运营的技能提升,最容易走偏的一步是先报课、先学工具。更有效的顺序是:先沿“品牌定位与策略—内容与传播—渠道与活动执行 ...
2026-10-23营销人员想赢得客户信任,单靠话术和关系维护越来越不够。客户在签约前会追问:你懂我的业务吗?方案里的数字怎么来的?承诺的效 ...
2026-10-23APP运营专员的能力提升,容易陷入两种误区:一是把“会用工具”当成能力全部,学了一堆Excel函数和SQL语法,回到岗位仍说不清一 ...
2026-10-23社群运营的沟通难点,不在于“会不会说话”,而在于同一件事要对三类人说清楚:对用户要安抚情绪、给出确定答复;对产品、活动、 ...
2026-10-23