- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
sas学第三天
数 据 管 理 基 础
今天是学习sas的第三天
1.数据步运行机制
对于小量的数据,用CARDS语句和空语句把数据夹在中间放在数据步程序中就可以用
INPUT 语句输入数据。如果数据量很大(有时可以有上亿行、几千列),直接把数据放在程序中不利于程序和数据的维护。这时,一种办法是把原始数据放在一个普通的文本格式的文件中,然后用INFILE语句指定输入文件名。
3.1-4
data c;
infile C:\Users\Administrator\Documents\My SAS Files\9.1\data.txt;
input x y;
run;
结果在逻辑库中
input 变量名 [$ 开始列-结束列 .小数位]...;、
小提示:
注意INFILE语句要写在INPUT语句之前,有INFILE语句就不再有CARDS语句和空语句。INFILE 关键字后面跟的是一个包含文件名的字符串,可以使用全路径名,如果只有文件名则在当前工作目录寻找。
我们要输入一批身份证号码,但只输入其中的出生年、月、日信息data p;
input year 7-10 mon 11-12 day 13-14 num 1-4;
cards;110101196902150059
;
run;
proc print;
run;
精度要小于数值的位数
7-10 七到十列
如果需要完全原样地输入字符型数据(包括头尾空格、单独的小数点),可以用有格式输入,即在字符型变量名和$符后加上一个输入格式如CHAR10.表示读入10个字符。 有特殊格式的数据需要用有格式输入,即在变量名后加格式名。其中最常见的是用来输入日期。数据中的日期写法经常是多种多样的,比如1998年10月9日可以写成“1998-10-9 ”,,“9/10/98”等等data a;
input data yymmdd8. sales;
format data yymmdd10.;
cards;
56-6-13 1100
67.12.15 1200
78 10 2 1300
891001 140015001600
;
run;
proc print data =a;
run;
Input是指定格式输入,format是指定格式输出
Yymmdd8输入日期占居8列位置
日期数据占据8列位置,如果不满8列要用空格补充,不能让后面的数据进入这8列。这样可以输入没有世纪数,年、月、日之间用减号、小数点、空格分隔的日期,可以输入YYMMDD 格式的六位数的日期(一位数的月、日前面补0),可以输入带世纪数的YYYYMMDD格式的日期(一位数的月、日前面补0)。FORMAT语句规定输出日期变量时使用的显示格式。data date2;
input sales date : yymmdd10.;
format date yymmdd10.;
put date=;
cards;
110 56-6-13
12 67.12.15
;
run;
proc print;
run;
输入的日期变量不再第一项,可用一个冒号,表示允许日期前面有空白
如果日期变量不是第一个,则它的前一项最好使用列格式并且指定结束列号为日期值的前一列,或者前一项也使用指定输入格式的输入方法,并且使前一项的输入域宽占满日期前的列。如果用自由格式则当前一项与日期数据之间间隔超过一个空格时有可能导致日期读入时对不准位置。如果数据是按列对齐的,还可以在日期变量前加上“@开始列号”说明日期变量开始读取的位置
SAS数据步程序和普通程序的一个重大区别:SAS数据步如果有数据输入,比如用INPUT、SET、MERGE、UPDATE、MODIFY等语句读入数据,则数据步中隐含了一个循环,即数据步程序执行到最后一个语句后,会返回到数据步内的第一个可执行语句开始继续执行,直到读入数据语句(INPUT、SET、MERGE、UPDATE、MODIFY等)读入了数据结束标志为止才停止执行数据步,DATA语句中指定的数据集。如果没有数据输入而只是直接计算,则数据步程序不需要此隐含循环。数据步因为
有这样一个隐含循环,所以也提供了用来查询某一步是第几次循环的特殊变量_N_,它的值为数据步循环计数值。data temp;
put class= x= y=;
do class =1 to 3;
input x y@@;
output;
put class= x= y=;
end;
cards;
34 56 78 90 35 67
89 10 23 65 77 45
;
run;
proc print;
run;
3.1-2
比较输出结果的变化
data temp
文档评论(0)