京公网安备 11010802034615号
经营许可证编号:京B2-20210330
上篇介绍了SAS数据管理功能上,本篇介绍数据管理功能下,本篇主要内容包括如何利用set和output语句拆分数据集,数据集如何合并?以及如何使用SQL提取数据。
有时我们需要根据某一分类原则把数据行分别存放到不同的数据集。比如,我们希望把数据集a中的所有男生的观测放到数据集am中,把所有女生的观测放到af中,可以使用如下程序:
data am af;
set a;
select(sex);
when ('男') output am;
when('女') output af;
otherwise put sex='有错';
end;
drop sex; /*去掉sex这一列*/
run;
proc print data=am;run;
proc print data=af;run;
OUTPUT语句是一个可执行语句,它使得当前观测被写到语句指定的数据集中。这样,我们根据SELECT的结果把不同性别分别放到了两个不同数据集中。
OUTPUT语句还可以用来强行写入数据集而不必象我们在数据步流程图中说明的那样等到数据步最后一个语句完成。数据步中有了OUTPUT语句后数据步流程中不再有自动写入观测的操作,而只能由OUTPUT语句指定输出。不指定数据集名的OUTPUT语句输出到第一个结果数据集。比如下面的程序生成一个包含1到10的及其平方的有10个观测的数据集:
data sq;
do i=1 to 10;
j=i*i;
output;
end;
run;
proc print;run;
如果删去上面的OUTPUT语句则结果数据集中只有i=11,j=100的一个观测。
几个结构相同的数据集可以上下地连接到一起。
data classes;
set class1 class2 class3;
run;
有时我们需要在合并数据集时加入一个变量来指示每一个观测原来来自哪一个小数据集,这可以在SET语句的每一个数据集名后面加一个括号里面写上IN=变量名,变量名所给的变量取1表示观测来自此数据集,取0表示观测非来自此数据集。例如,我们把a数据集按男、女拆分成了am和af两个数据集并抛弃了性别变量,就可以用如下程序连接两个数据集并恢复性别信息:
data new;
set am(in=male) af(in=female);
if male=1 then sex='男';
if female=1 then sex='女';
run;
data new;
merge ssa ssb ssc;
run;
若数据集的观测顺序不一样,一般应该采用按关键字合并的办法,排序过程如下:
proc sort data=ssa;
by name;
run;
proc sort data=ssb;
by name;
run;
proc sort data=ssc;
by name;
run;
如果我们发现数据集中的某些数据值有错误或者现在的值已经改变了,我们可以从更正了的原始数据重新生成数据集,或者使用更有效的方法,即建立一个只包含新数据值的数据集,用此数据集修改原数据集。使用如下的DATA步中可以实现数据集的更新:
DATA 新数据集名;
UPDATE 原数据集 更新用数据集;
BY关键变量;
RUN;
例如,数据集C9501中王思明的语文成绩实际应该是91分,张红艺性别应为男,可以先生成如下的只包含更正数据值的数据集,不需要改的观测不列入,不需要改的变量不列入或取缺失值:
data upd;
input name $ sex $ math;
cards;
张红艺 男 .
王思明 . 91
;
run;
然后,把原数据集C9501和更新用数据集UPD均按姓名排序:
proc sort data=c9501;
by name;run;
proc sort data=upd;
by name;run;
最后用UPDATE和BY更新得到新数据集NEW,
data new;
update c9501 upd;
by name;
run;
用PROC SQL作查询的最简单的用法如下
PROC SQL;
SELECT 第一项,第二项,…,第n项
FROM数据集
WHERE 观测选择条件;
RUN;
其使用方法与SQL语言基本一致
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在Python数据分析与数据清洗工作中,Pandas是最核心的数据处理库,DataFrame是结构化数据的标准存储格式。在实时数据采集、循环 ...
2026-08-19在零售行业大数据分析与精细化运营领域,纸尿裤旁摆放啤酒是最经典、最具代表性的商业案例。两种看似毫无关联的商品,一个是婴幼 ...
2026-08-19 很多数据分析师能熟练地计算指标、搭建标签体系,但当被问到“画像到底在解决什么问题”“画像和标签是什么关系”“画像如何 ...
2026-08-19在数据分析、业务监控、质量检测与风险管控工作中,数据波动性是衡量数据稳定性、业务健康度、结果可信度的核心依据。数据波动代 ...
2026-08-18很多分析师在设计标签时思路清晰,但真到落地环节却面临“数据在手,不知如何转化为可用标签”的困境:或因加工方式选择不当导致 ...
2026-08-18在数据分析、业务评价、产品评级、用户分层与综合决策场景中,单一指标往往无法全面、客观地评价事物整体水平。现实中的评价对象 ...
2026-08-18在数理统计、假设检验、数据分析与机器学习领域中,卡方分布(χ²分布)是继正态分布、t分布之后最重要的连续型概率分布之一。 ...
2026-08-17在Python数据清洗、文本校验、账号密码规则校验、脏数据过滤、字符串规整化处理中,正则表达式是最高效、最常用的文本匹配工具。 ...
2026-08-17 很多分析师每天和数据打交道,但当被问到“标签是什么”“标签和指标有什么区别”“标签体系如何设计”时,却常常答不上来。 ...
2026-08-17手游行业具备用户迭代快、竞争激烈、用户粘性易流失的典型特征。随着新游持续上线、玩家审美升级、玩法疲劳等问题出现,存量用户 ...
2026-08-14在数字化产品运营、商业数据分析、业务增长管理中,零散的指标统计无法支撑系统性的业务决策。单一的点击率、转化率、销量数据只 ...
2026-08-14 很多数据分析师每天都在写SQL,但当被问到“数据查询语言(DQL)的本质是什么”“SELECT语句中各子句的书写顺序与实际执行顺 ...
2026-08-14在数据库数据分析、数据清洗、报表统计与业务查询场景中,日期时间是最高频、最核心的基础字段。数据库中存储的日期格式多样,包 ...
2026-08-13在数据统计分析与数据清洗工作中,箱线图是一种简洁高效、客观性强的数据可视化图表,能够直观呈现数据集的分布特征、离散程度和 ...
2026-08-13 很多数据分析师写过无数个SELECT查询,但当被问到“如何新建一张表来固化中间数据”“创建视图和创建物理表有什么区别”“视 ...
2026-08-13在自动化办公、数据采集、定时统计、日志清理、系统监控等场景中,程序往往需要按照固定时间间隔重复执行指定任务,这种运行机制 ...
2026-08-12在数据分析日常工作中,Excel数据筛选是数据清洗、数据提取、样本筛选的核心基础操作。传统Excel手动筛选、函数筛选方式,面对多 ...
2026-08-12 很多数据分析师精通Excel函数和数据透视表,但当被问到“数据从哪里来”“表和视图有什么区别”“数据库管理系统和SQL是什么 ...
2026-08-12在数据分析、统计建模、数据挖掘与商业调研过程中,原始数据往往无法做到绝对干净规整。受系统故障、人工录入失误、设备误差、突 ...
2026-08-11在数据分析工作中,聚类分析是典型的无监督学习方法,核心作用是依据数据自身的多维特征,将相似样本自动划分为若干类别,实现“ ...
2026-08-11