SAS的三种输入样式&读取数据的特殊操作

目录

一、列表输入

二、列输入

三、格式化输入

四、读取数据的特殊操作



一、列表输入

读取以空格(至少一个)分开的原始数据。

  1. 必须读取所有的数据记录,不能跳过某些值
  2. 任何缺失值必须用“.”符号标识。
  3. 字符串数据不能包含空格、长度不能超过8个字符。
DATA toads;
    INPUT ToadName $ Weight Jump1 Jump2 Jump3;
    DATALINES;
    Lucky 2.3 1.9 . 3.0
    Spot 4.6 2.5 3.1 .5
    Tubs 7.1 . . 3.8
    Hop 4.5 3.2 1.9 2.6
    Noisy 3.8 1.3 1.8
    1.5
    Winner 5.7 . . .
;
RUN;
PROC PRINT DATA=toads;
    TITLE 'SAS Data Set Toads';
RUN;

 

由于SAS需要到下一行去获取Noisy最终一跳的数据,SAS中日志如下:

二、列输入

读取按固定列排列的原始数据,变量中带空格的数据常用

  1. input关键字后接变量名、再接变量的列位置
  2. 数值型:INPUT Age 11-13;
  3. 字符型:INPUT Name $ 1-10;(固定长度)
  4. 列输入的优势:
    a、变量值之间可以没有空格
    b、缺失值可以留空
    c、字符型数据可以内嵌空格
    d、可以跳过不需要的变量
DATA sales;
	INPUT VisitingTeam $ 1-20
          ConcessionSales 21-24
          BleacherSales 25-28
          OurHits 29-31
          TheirHits 32-34
          OurRuns 35-37
          TheirRuns 38-40;
	DATALINES;
Columbia              35  67  1 10  2  1
Plains               210      2  5  0  2
Gilroy                151035 12 11  7  6
Sacramento           124  85 15  4  9  1
;
RUN;
PROC PRINT DATA=sales;
	TITLE 'SAS Data Set sales';
RUN;

三、格式化输入

读取非标准格式的原始数据

  • W:宽度
    d:小数位数
    informat:形式,例如日期的MMDDYY
  • 字符:$<informat>w.
    数值:<informat>w.d
    日期:informatw.
  • 日期数据实际上是数值型数据,表示从1960年1月1日到该日期的天数
DATA contest;
	INPUT Name $16. Age 3. +1 Type $1. +1 Date MMDDYY10.
          (Score1 Score2 Score3 Score4 Score5) (4.1);
	DATALINES;
Alicia          13  c 10-28-2012 7.8 6.5 7.2 8.0 7.9
Matthew         9   D 10-30-2012 6.5 5.9 6.8 6.0 8.1
Elizabeth       10  C 10-29-2012 8.9 7.9 8.5 9.0 8.8
Lori            6   D 10-30-2012 6.7 5.6 4.9 5.2 6.1
Jose            7   d 10-31-2012 8.9 9.510.0 9.7 9.0
Brian           11  C 10-29-2012 7.8 8.4 8.5 7.9 8.0
;
RUN;
PROC PRINT DATA=contest;
	TITLE 'SAS Data Set contest';
RUN;

 

常用输入格式:

四、读取数据的特殊操作

/*
原始数据:
--------10--------20--------30--------40----
My dog Sam Breed: Rottweiler Vet Bills: $478
*/

INPUT @'Breed:' DogBreed1 $;
INPUT @'Breed:' DogBreed2 $20.;
INPUT @'Breed:' DogBreed3 :$20.;

/*
DogBreed1 的变量值为:Rottweil
DogBreed2 的变量值为:Rottweiler Vet Bills
DogBreed3 的变量值为:Rottweiler
*/
  1. @'str'  列指针
    读取'str'之后的内容

  2. ‘:’ 冒号修饰符
    目的:目的是获取完整单不包含多余空格的值。
    使用于输入格式前。
  3. 行指针
    跨行观测值的读取方式:指定SAS何时换行读取。
    默认:在INPUT语句还没有执行完,就遇到了行尾,SAS将自动进入下一行继续读取。此时日志中会有这样的提醒:“SAS进入了新的一行”
    斜线 ‘/’:跳至当前行的下一行
    #n:       跳至原始数据的第n行;
  4. 列指针
    +n:  向右移动n列
    @n: 行动到第n列
  5. 单尾@、双尾@@
    单尾@:    停留在当前行,只在当前DATA步的input语句中有效。
    双尾@@:停留在当前行,保留到下一个DATA步
    因为一个DATA步读取一条观测,所以也可以这样理解:
    单尾@:    多个input语句读取一条(行)观测时使用
    双尾@@:多个观测在(原始数据的)一行时使用
  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Miya_o00

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值