欢迎来到天天文库
浏览记录
ID:13393876
大小:926.00 KB
页数:17页
时间:2018-07-22
《the little sas book 学习笔记 第二章(2)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数说工作室www.jiayounet.comThelittleSASbook学习笔记第二章(2)www.jiayounet.com第二章将你的数据放入SAS(2.11-2.21)2.12一行有多个观测值的原始文件读取当一行出现多个观测值时,可以在input语句结尾加一个停止符号@@例子有一个关于降水量的数据,precipitation.dat,文件包含城市名、州名、月平均降水量、月平均降水天数:这个数据文件中,第一行包含了两个观测值,可以用@@的程序读取:日志记录如下:数说工作室www.jiayounet.com中间的说明,SASwenttoanewlinewhenIN
2、PUTstatementreachedpasttheendofaline.是指读取第二个值时达到第一行末尾,并转到下一行继续读取。通常这些信息会预示一个问题出现,但在这里它们都是你所想要的(为什么?)输出结果如下:2.13读取原始数据的部分观测值有时候只需要读取原始数据的部分观测值,比如只需要年鉴中的女性数据、收入超过10万的人口数据等。此时的数据读取方式如下:在SAS读取某一行观测值时,首先读取足够的变量以便决定是否需要保留此行的观测值。然后在input语句结尾加符号@,叫做atrailingat(calledatrailingat),这告诉SAS先停在(hold)此
3、行,同时用IF语句检测此观测值是否满足需要,如果是,那么可以再用一个input语句来读取现有的变量。例子有一个关于当地交通的数据,traffic.dat数据包含街道的类型(freeways和surface)、街道类型、早晨每小时的机动车流动量、晚上每小时机动车流动量。如果现在你只需要freeway的数据,可以用下述程序:数说工作室www.jiayounet.com第一个input读取字符串变量,@是SAS停留在观测值上并用IF检测,第二个input读取input后面的变量值。程序执行后日志包括两部分说明,一个说明读取了8个记录,另一个说明新数据集中只包含三个观测值。输入
4、结果如下所示:@vs@@@的作用类似于@@,都是行停留指示符(line-holdspecifiers),不同地方在于停留多久,@能使SAS停留到下一个input语句(也不换行),@@能使停留的时间到下一个data步(也不换行)。比如这段代码:datatest;infilecards;inputx@;inputy;inputz@@;cards;数说工作室www.jiayounet.com1234567891011121314151617;run;test输出结果就是:2.14用infile语句中的选项控制输入读取原始数据时,SAS做了某些假设,比如从第一行开始读取数据,对
5、于跨行观测值,会自动转到下一行继续读取。但有的特殊数据不满足这些假设,infile语句中的选项可以让SAS读取这些特殊数据。FIRSTOBS=FIRSTOBS=选项告诉SAS从哪一行开始读取数据,当数据开头有些说明信息,或者想要跳过某些行时,这个选项很有用。例如,如下原始数据文件中,开头两行是关于数据的描述:那么用如下程序可以让SAS从第三行开始读取数据:OBS=OBS=告诉SAS一直读取到哪一行位置,注意是行而不是观测值(有的观测值占据多行)比如,如下的原始数据文件中,结尾处还有一句不需要的数据说明时。就需要这个选项:数说工作室www.jiayounet.com用FI
6、RSTOBS=3和OBS=5就可以读取第三行到第五行的数据:MISSOVER在input语句中输入的几个变量,SAS在观测值中就读取几个变量,如果一行未读完,则进入下一行直到输入的变量都读取了变量值。missover可以让SAS不进入下一行读取,未赋值的变量就使其成为缺失值。当如下这种数据,就需要missover选项,一个学生应该有5门课的成绩,但由于最后两门是自学课程,不是所有学生都完成,故而缺失:如下的程序可以让SAS将Nguyen第五门课的成绩设为缺失值,从而不牵扯到下一行:Truncover使用columninput或formattedinput输入时可能会需要
7、这个选项,因为这时有的数据行比其他的短。如下的原始数据中,由于三行的长度都不一样,input中只能指定最长的一行:程序如下:这里指定了第二行的长度street$22-37,但是第一行mapleave.并没占够至第37列(注意后面是没有空格的),故而必须用truncover,否则会转到下一行继续读取,第三行情况也是。数说工作室www.jiayounet.com2.15用数据步读取分隔符文件(delimitedfiles)分隔符文件中,变量值之间会用一些特殊的字符隔开,比如逗号或制表符。DLM=和DSD选项可以让SAS容易的读取这些分隔符文件
此文档下载收益归作者所有