sas数据操作-3

希望有疑问的朋友提出问题,大家一起学习进步,以后我也会多多的写自己的例子

update语句

UPDATE master-data-set<(data-set-options)> transaction-data-set<(data-set-options)>
<END=variable>
<UPDATEMODE= MISSINGCHECK | NOMISSINGCHECK>;
BY by-variable;

TIPS:

1:后面只能跟两个数据集,且一定要和by语句连用,这个by语句给出了主数据集和更新数据集共同变量的名字。

2:update语句中使用的数据集必须实现按照by语句制定的变量进行排序,或者已经有合适的索引

3:对更新数据集存在缺失值的处理通过开关选项UPDATEMODE实现

MISSINGCHECK:检查更新数据集,若有缺失值,则保留主数据及中相应的数据

NOMISSINGCHECK:不检查更新数据集,若有缺失值,则将主数据集中的相应数据更新为缺失值

4:update能做到的merge都能做到,除了对更新数据及缺失值的处理

modify语句

merge和update语句对数据集横向合并的主要功能只能体现在匹配访问上(by var;),但是对于非常庞大的数据集需要定期更新,但是每次更新的观测值对象都是动态的,这时候使用merge或update会消耗很多的资源,这时候可以通过modify高效的访问机制来实现。使用modify《系统会有两个pdv》

modify的四种格式

Form 1:
MODIFY master-data-set <(data-set-options)> transaction-data-set <(data-set-options)>
<NOBS=variable> <END=variable>
<UPDATEMODE=MISSINGCHECK | NOMISSINGCHECK>;
BY by-variable;
Form 2:
MODIFY master-data-set <(data-set-options)> KEY=index </ UNIQUE> <NOBS=variable>
<END=variable>;
Form 3:
MODIFY master-data-set <(data-set-options)> <NOBS=variable> POINT=variable;
Form 4:
MODIFY master-data-set <(data-set-options)> <NOBS=variable> <END=variable>;

例子:

data stock(index=(partno));
   input PARTNO $ DESC $ INSTOCK @17
         RECDATE date7. @25 PRICE;
   format  recdate date7.;
   datalines;
K89R seal   34  27jul95 245.00
M4J7 sander 98  20jun95 45.88
LK43 filter 121 19may96 10.99
MN21 brace 43   10aug96 27.87
BC85 clamp 80   16aug96 9.55
NCF3 valve 198  20mar96 24.50
KJ66 cutter 6   18jun96 19.77
UYN7 rod  211   09sep96 11.55
JD03 switch 383 09jan97 13.99
BV1E timer 26   03jan97 34.50
;
run;

/*直接改变所有的recdate变量观测值,可以不用任何更新数据集*/

data stock;
modify stock;
recdate=today();
run;
proc print data=stock noobs;
title ‘INVTY.STOCK‘;
run;

/*用更新数据集更新主数据集,使用匹配访问,更新数据集放在主数据集后面*/

data stock;
modify stock addinv;
by partno;
RECDATE=today();
INSTOCK=instock+nwstock;
if _iorc_=0 then replace;
run;
proc print data=stock noobs;
title ‘STOCK‘;
run;


data newp;
   input TOOL_OBS NEWP;
   datalines;
 1 251.00
 2 49.33
 3 12.32
 4 30.00
 5 15.00
 6 25.75
 7 22.00
 8 14.00
 9 14.32
10 35.00
;/*通过观测序号来访问,先set数据集再进行改变*/

data stock;
set newp;
modify stock point=tool_obs nobs=max_obs;
price=newp;
recdate = today();
run;

/*通过索引进行访问,先set数据集再进行改变*/

data stock;
set addinv;
modify stock key=partno;
INSTOCK=instock+nwstock;
RECDATE=today();
if _iorc_=0 then replace;
run;
proc print data=stock noobs;
title ‘INVTY.STOCK‘;
run;

 /*对于更新数据集有重复值的情况*/
data newinv;
   input PARTNO $ NWSTOCK;
   datalines;
K89R 55
M4J7 21
M4J7 26
LK43 43
MN21 73
BC85 57
NCF3 90
KJ66 2
UYN7 108
JD03 55
BV1E 27
;
data stock;
   set newinv;
   modify invty.stock key=partno / unique;  /*使用unique则会对m4j7的值进行累加,不用就只会加第一个*/
   INSTOCK=instock+nwstock;
   RECDATE=today();
   if _iorc_=0 then replace;
run;
proc print data=stock noobs;
   title ‘Results of Using the UNIQUE Option‘;
run;
 

sas数据操作-3,布布扣,bubuko.com

时间: 2024-12-28 09:49:49

sas数据操作-3的相关文章

sas数据操作-2

By语句 By语句用于规定分组变量,控制set,merge,update或modify语句 官方说明: BY<DESCENDING> variable-1<...<DESCENDING>variable-n> <NOTSORTED> ; specifies the variable that the procedure uses to form BY groups. You can specify more than one variable. By def

sas数据操作

set语句: set语句从一个或多个sas数据集中读取观测值并实现纵向合并,每一个set语句执行时,sas就会读一个观测到pdv中,一个daya步可以有多个set语句,每个set语句可以跟多个sas数据集,多个set语句含有多个数据指针. set会将输入数据集中的所有观测值和变量读取,除非你中间执行其他步骤 SET<SAS-data-set(s)<(data-set-options(s) )>><options>; (data-set-options) specifie

作业一 统计软件简介与数据操作

spss软件 所属类别 : 软件 SPSS(Statistical Product and Service Solutions),"统计产品与服务解决方案"软件.最初软件全称为"社会科学"(SolutionsStatistical Package for the Social Sciences),但是随着SPSS产品服务领域的扩大和服务深度的增加,SPSS公司已于2000年正式将英文全称更改为"统计产品与服务解决方案",标志着SPSS的战略方向正

包婷婷 (201550484)作业一 统计软件简介与数据操作

SPSS(Statistical Product and Service Solutions),"统计产品与服务解决方案"软件.最初软件全称为"(SolutionsStatistical Package for the Social Sciences),但是随着SPSS产品服务领域的扩大和服务深度的增加,SPSS公司已于2000年正式将英文全称更改为"统计产品与服务解决方案",标志着SPSS的战略方向正在做出重大调整.为IBM公司推出的一系列用于统计学分析

郭佳庆(201551296)第一次作业:统计软件简介与数据操作

一.SPSS 1.基本信息 SPSS(Statistical Product and Service Solutions),"统计产品与服务解决方案"软件.最初软件全称为"社会科学软件包"(SolutionsStatistical Package for the Social Sciences),但是随着SPSS产品服务领域的扩大和服务深度的增加,SPSS公司已于2000年正式将英文全称更改为"统计产品与服务解决方案",标志着SPSS的战略方向正

计算机系统之汇编---IA32处理器数据格式及数据操作

计算机系统之汇编---IA32处理器数据格式及数据操作 IA32数据格式: Intel用术语"字"表示16位数据类型,因此,称32位数为"双字",称64位数为"四字". Char*这里指的是所有指针类型,注意:c语言新增加的long long是八字节,但是硬件IA32不支持这个类型. 寄存器(8个32位的寄存器,均以%e开头) %eax.%ecx.%edx:调用者保存(数据)寄存器,当过程p调用q,q可以覆盖这些寄存器,但是不会改变p中的数据.

Cocos数据篇[3.4](3) ——XML数据操作

[唠叨] XML 即 可扩展标记语言,在游戏开发中,常用于保存游戏数据信息,如最高分.游戏等级等信息,和描述一些资源等. 加载动画的plist文件.瓦片地图编辑器到处的地图格式tmx文件,实际上都是特定格式的xml文件. 另外 UserDefault 单例类保存的数据,也是存储在xml文件中的. Cocos2d-x 已经加入了 tinyxml2库 用于xml的解析.3.x版本位于external/tinyxml2下. 本节要介绍的就是:如何使用 tinyxml2库 来操作处理xml文件. [参考

Redis数据操作--字符串

| 储存文字,储存数字(整数,浮点数),二进制数 |  字符串操作 -- 设置字符串     set key value     # 如果字符串键key已经存在,     那么使用新值覆盖原来的旧值 -- 获取字符串     get key     # 返回字符串键key储存的值 -- 仅在键不存在的情况下进行设置     setnx key value     # 仅在键key不存在的情况下,将键key的值设置为value,     效果和set key value NX一样.NX的意思为"N

SQL语言-----数据操作

数据操作 增加数据,insert into 标准格式 insert into 表名 (字段的列表)value(数据列表): 使用set insert into 表名 set 字段1=值,2.....: 从其他数据表取数据插入 insert into 表名 (字段列表)select; 和insert into一样也是分在种,标准写法,set语法,从其它表取数据 标准方式 replace into 表名 (字段的列表) values (数据列表) 使用set: replace into 表名 set