SASBase25Reading Raw Data in Fixed Fields 14统计学18陈成.docx
《SASBase25Reading Raw Data in Fixed Fields 14统计学18陈成.docx》由会员分享,可在线阅读,更多相关《SASBase25Reading Raw Data in Fixed Fields 14统计学18陈成.docx(9页珍藏版)》请在冰豆网上搜索。
![SASBase25Reading Raw Data in Fixed Fields 14统计学18陈成.docx](https://file1.bdocx.com/fileroot1/2023-2/5/fd31403c-6345-41b2-a275-6da749965325/fd31403c-6345-41b2-a275-6da7499653251.gif)
SASBase25ReadingRawDatainFixedFields14统计学18陈成
实验项目SASBase25ReadingRawDatainFixedFields
【实验目的】
1.区分标准的和非标准的数值型数据
2.读取标准的固定区域数据
3.读取非标准的固定区域数据
【实验原理】
列输入的复习
当数据以列的形式或者是在固定区域内显示时,我们可以用列输入的方式来读取数据。
用这种方式读取数据时,对每一个区域来说,开始列和结束列都是指定的。
字符型变量可以通过
美元符号($)来进行区分。
列输入具有以下的性质:
•它可以从任意的顺序来读取区域内的数据
•它可以用来读取包含空格的字符型变量
•对于缺失的数据来说,我们不需要使用分隔符。
缺失的数据会被读取为空格,而且其他区域的数据并不会读取错误
•区域,或是部分区域可以二次读取
•区域不必用空格或是其他的分隔符来分割
•它可以用来读取标准的字符型变量或者是数值型变量
识别非标准的数值型数据
标准的数值型数据变量包含数字,科学记数法,小数点和正负号。
如果这个数值型数据包含了逗号(,)或是美元符号($),我们就认为这个数据是非标准的。
非标准的数值型数据包括:
•含有如百分号(%),美元符号($),或是逗号(,)之类特殊字符的变量
•时间与日期变量
•以分数形式,整形二进制,真实二进制或是十六进制出现的数据
选择一种输入方式
SAS提供了两种输入方式来读取固定区域内的数据,分别是列输入和格式化输入。
你可以使用
•列输入来只读取标准化的数据
•格式化输入来读取同时标准化和非标准化的数据
使用格式化输入
格式化输入使用列指针来控制输入指针的位置,使它在一个指定的位置上。
如果第一个变量处于第一列的话,那么列指针控制是可选择的。
@n是一个能移动输入指针到一个指定的数字列的控制指针,你可以用@n这个列指针控制来从任何顺序读取列里面的数据。
+n是一个相对指针控制,它可以让输入指针以现在的位置为基础,向前移动相应的列数。
+n指针控制不能向后移动,然而,你可以使用-n的符号来使它向后移动
使用informat输入
informat告诉SAS程序如何来读取原始数据我们有用来读取标准的和非标准的字符型变量的informat输入,也有用来读取标准的和非标准的数值型数据的informat输入。
informat输入通常包含一个w变量来指定原始数据区域的长度。
我们通常用小数点(.)来结束w变量的长度,或是用来区分整数的位数与小数的位数。
记录的格式
记录的格式通常指定了在文件内部如何记录数据。
一些操作系统自带了许多不同的记录格式:
其中两个最常见的是固定长度记录和变长度记录。
当你把固定区域数据读取到SAS数据集内时,如果采用的是变长度记录,那么你的变量很可能变短或是消失,这时候,PAD选项可以把每个记录用空格来拉长,这样所有的变量都有同样的长度。
【实验内容】
1.使用@n进行格式化输入
2.使用+n进行格式化输入
3.用comma来表示非标准的数值型变量
4.在一个程序中使用@n,+n的格式化输入,并用comma控制非标准的数值型变量
5.格式化输入的汇总
【实验程序及解释】
1.使用@n进行格式化输入
datasasuser.vansales;
infilevandata;
inputRegion$9.@13Quarter1.
@16TotalSalescomma11.;
run;
procprintdata=sasuser.vansales;
run;
2.使用+n进行格式化输入
datasasuser.vansales;
infilevandata;
input+12Quarter1.@1Region$9.
+6TotalSalescomma11.;
run;
procprintdata=sasuser.vansales;
run;
3.用comma来表示非标准的数值型变量
dataperm.empinfo;
infileempdata;
input@9FirstName$5.@1LastName$7.+7JobTitle3.
@19Salarycomma9.;
run;
procprintdata=perm.empinfo;
run;
4.在一个程序中使用@n,+n的格式化输入,并用comma控制非标准的数值型变量
dataperm.empinfo;
infileempdata;
input@9FirstName$5.@1LastName$7.
+7JobTitle8.@19Salarycomma8.;
run;
【补充练习】
5.格式化输入的汇总
datasasuser.carsales;
infilecardata;
inputYear4.+1Country$6.
+1Type$6.@20Salescomma10.;
run;
procprintdata=sasuser.carsales;
run;
【补充练习】
【答案】C
【解释】input后跟着变量名,字符型变量钱加上美元符号($)
【答案】C
【解释】列输入不能用来读取非标准的变量,只能用来读取标准的字符型和数值型变量
【答案】A
【解释】标准的数值型数据变量包含数字,科学记数法,小数点和正负号。
如果这个数值型数据包含了逗号(,)或是美元符号($),我们就认为这个数据是非标准的。
【答案】D
【解释】格式化输入可以同时读取标准化的数据和非标准化的数据
【答案】B
【解释】1—5列中有字符型变量,要加$符号,然后没有小数点,不用.d
【答案】D
【解释】COMMAw.d这个形式可以用来表示一些特殊符号,包括百分号(%),美元符号($),或是逗号(,)
【答案】B
【解释】读取第七列的数据,用+6或者是@7,后面要读取第一个区域的变量,用@1,有字符型变量,加$符号。
【答案】D
【解释】有美元符号($)和逗号(,)所以用comma来表示
【答案】B
【解释】指针默认的初始位置为第一列,item变量是字符型变量,加上$符号,有九位,用9.第二部分的unitcost变量有$符号,用comma来表示,quantity变量为标准的数值型变量,最长为3位,选B
【答案】A
【解释】PAD选项可以拉长变量,使变量丢失的部分显示出来,选项A中第二行和第四行的数据丢失了。