SAS学习2(data步,input语句,从文件中读取数据)
Posted Zephyr丶J
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SAS学习2(data步,input语句,从文件中读取数据)相关的知识,希望对你有一定的参考价值。
数据步中最复杂的是INPUT语句
data语句
data是数据步开始的语句
数据集名可以写成逻辑库名+点+数据集库名
一个会话,可以建立多个数据集,最后建立的数据集是当前数据集
不需要数据集的时候,数据集用_NULL_名字定义
DATALINES相当于cards,用来定义内置数据,完全等价
这里在过程步中输出的时候,输出的是当前数据集,也就是最后创建的数据集score;要输出student数据集,需要指定
提交以上代码,显示如下,只在日志中显示了结果值:
第一句逻辑库ep,对应的物理路径,这样建立的数据集就可以在磁盘上存在,下次可以直接使用
数据集是ep底下的students数据集
input语句
定义或者描述如何读入数据
多个数据项描述用空格分割开
列表输入
列表输入这种方法,数据必须是空格分割
列输入
这里1-18表示数据所在的字符位置
这里可以看到可以根据位置重复读取一行的数据
age变量是用date()这个函数获取当前时间,然后用year()函数获取年份
如果要写input,必须要有输入,或者是cards,或者是infile
这里看到不区分大小写
格式化输入
变量名后面指定输入格式,前面可以加上修饰符
mmyydd10固定写法,表示10位的时间格式,月日年加起来6位,两个分隔符加起来8位(PPT里写错了,书上是8)
weight表示整体有4位宽,小数点后保留一位
这里看到,读出来的日期,是一个数字,而不是直接显示的年月日,应该是计算的某一天到输入日期的天数;
另外,读体重的时候,是小数点,SAS中小数点的读取是从后向前的,因此对于63,先读到3被作为小数点后的部分,就会被读成6.3;640读成64.0,这个比较奇怪
输出时间格式的时候,需要用format定义worddate. 格式
这里特别注意,这个格式后面要加个.,如果不加是没有效果的
格式列表
格式列表用于变量多且格式相似的情况
score1到score5五个变量
第三个列子少了个s
用&修饰符解决数据中出现一个空格的问题
指针控制
行指针可以跨行读取
绝对指针,指针位置是绝对的,表示这一行的哪一列
数值型就是第几列
第一个例子,从15列开始读sales变量,变量长度是5
第二个例子,用A变量来代替数字,其实和1没有区别
第三个例子,表达式算出来整数
下面这个例子,读到两个变量的值,一个是grade 67,一个是A 123
字符型指针工作方式类似于搜索
字符串也是用单引号
这里从size=后面开始读取,这里第一行读取到的就是343,第二行读取到的就是123
第一个例子,先从23位置读入length,4个长度,加起来是27
然后从27+5开始,读width
/表示将指针移到当前行的下一输入行的第一列
#3 表示跳转到第三行
第一个例子中,可以看到每一次读取数据需要读三行,那么第二次读取的时候就是从第四行开始(但是行号会被重置,相当于将已经读入的前三行忽略掉)
第二个例子中,最后跳到了第四行但是没有任何操作,这个是告诉程序后两行相当于空行
第三个例子,读完grade变量,到第二行读取五个变量
行尾随符,可以保持读数据不换行
定义内置数据
如果某行数据少于变量个数,那么读取的时候就会跳到下一行去继续读取数据,导致数据混乱,所以需要进行处理
infile datalines MISSOVER语句用于表示数据不足时,按照缺失值填充,而不去跳到下一行读取
missover:当每行数据个数不一致时,有的变量可能没被赋值,missover告诉sas将这个变量赋为缺失值
封号一般用于结束数据,如果数据中有封号,那么用这条语句
这时,数据结束用四个封号结束
length
label
输出的时候打印别名
lostcard
这里每次两行读取数据,但是第三组数据会出现问题,丢掉了第一行数据
如果不做处理的话,后面的行都会出现错误
这里判断条件是如果id不等于(NE)idcheck,那么就表示丢失数据了,不读取
informat/format
missing
如果没有missing这个语句的话,如果遇到第二行数据,因为是R,而不是数值形的变量,所以sas会将这个值处理成小数点,即缺省值
加上missing,指定数据缺失的原因,从而可以加入到数据集中
这个用N R表示缺项值的代表符号
这个作用是,比如调查一个人的回答,n就表示没有这个人,r就表示拒绝回答之类的;表示对缺项值进行说明,说明什么原因导致了缺项
注释语句:
单条语句用 * 号,多行用 /* … */
options语句
改变系统设置
从外部文本文件读取数据
从现有数据集读取数据
从excel表单读取数据
从这里指定读入数据的类型,以及数据所在的位置,还有要保存到哪个逻辑库中,以及数据集的名字
然后会有一个选项,就是要不要保存读入数据的那一段代码,把代码保存到哪里。。
最后就会生成相应的数据集放在对应的位置
以上是关于SAS学习2(data步,input语句,从文件中读取数据)的主要内容,如果未能解决你的问题,请参考以下文章