sas读入数据全解析

2021-09-24 15:32

SAS数据步导入数据终极汇总——经典,一看就会

一、将数据录入SAS——DATA Step / Viewtable

1.Internal raw data- Datalines or Cards 命令;

2.External Raw data files- Infile 命令 + Input 命令;

二、将数据文件读入SAS ——DATA Step / PROC IMPORT

1.将SAS文件读入SAS——

data sasuser.saslin;

set "F:\sas1.sas7bdat";

run;

proc contents data=sasuser.saslin;

run;

2.将其他形式文件导入成SAS ——PROC IMPORT / 直接读入其他形式文件

proc import datafile = "c:\data\hsb2.sav" out= work.hsb2;

run;

proc contents data=hsb2;

run;

SAS导入数据:SAS recognizes the file type to be imported by file extension.

对数据长度的限制

在一些操作环境,SAS假定外部文件的纪录对最长为256(一行数据包括空格等所有字符在内的长度),如果预计读入的纪录长度超过256,可在Infile语句中使用LRECL=n 这个命令。

读入以空格作为分隔符的原始数据

如果原始数据的不同变量之间是以至少一个空格作为分隔符的,那可以直接采用List方法将这些数据读入SAS。

List Input读数据非常方便,但也有很多局限性:

(1) 不能跳过数据;

(2) 所有的缺失值必须以点代替

(3) 字符型数据必须是不包含空格的,且长度不能超过8;

(4) 不能直接读入日期型等特殊类型的数据。

程序举例:

INPUT Name $ Age Height;

读入按列组织的数据

有些原始数据的变量之间没有空格或其他分隔符,因此这样的文件不能以List形式对入SAS。但若不同变量值的都在每条记录的固定位置处,则可以按照Column 形式读入数据。Colunm读数据方法要求所有的数据均为字符型或者标准的数值型(数值中仅包括数字,小数点,正负号,或者是E,不包括逗号或日期型数据)。

相对于List方法,Column读数据方法有如下优点:

(1) 变量值之间无需用空格分开;

(2) 可以空格表示缺失值;

(3) 字符型数据中可包括空格;

(4) 可跳过数据。

程序举例:

INPUT Name $ 1-10 Age 11-13 Height 14-18;

使用格式命令读入非标准格式的数据

字符型数据: $informat w.

数值型数据: informat w.d

日期型数据: Datew.

(1)字符型:

$CHARw. :不删除前后空格,读入字符数据;

$HEXw. :将16进制的数据转化成字符数据;

$w. :删除前面空格,读入字符数据;

(2)日期,时间或日期时间型数据

DATEw. :以ddmmmyy或ddmmmyyyy形式读入日期;

DATETIMEw. :以ddmmmyy hh:mm:ss.ss 形式读入日期时间;

DDMMYYw. :以ddmmyy或ddmmyyyy读入日期;

JULIANw. :以yyddd或yyyyddd读入Julia日期;

MMDDYYw. :以mmddyy或mmddyyyy形式读入日期;

TIMEw. :以hh:mm:ss.ss形式读入时间;

(3)数值型数据

COMMAw.d :读入数值型数据,将其中的逗号,$ 删除,并将括号转化为负号

HEXw. :将16进制数据转化成浮点型数据

IBw.d :读入整数二进制数据;

PERCENTw. :将百分数转化为普通数据;

w.d :读入标准的数值型数据。

INPUT Name $16. Age 3. +1 Type $1. +1 Date MMDDYY10.

(Score1 Score2 Score3 Score4 Score5) (4.1);

多种输入格式综合

读入位置控制——列指针

+n –n :控制列指针从当前位置向前或向后移动n个字符;

@n :控制列指针指向

举例:

INPUT ParkName $ 1-22 State $ Year @40 Acreage COMMA9.;

读入杂乱数据

在不确定从哪一列开始读入数据,但知道读入的数据均位于某一特定字符或字符串之后时,可采用@’character’列指针。

如:有字符串如下,需读入Breed:后面的字符串

My dog Sam Breed: Rottweiler Vet Bills: $478

(1)SAS 语句:Input @’Breed: ’ DogBreed $; 读入内容: Rottweil

读入Breed:后面的字符串,赋给DogBreed,读入时到空格时,自动结束。

(2)SAS 语句:Input @’Breed:’ DogBreed $20.; 读入内容:Rottweiler Vet Bill

读入Breed: 后面的字符串,赋给DogBreed,读入字符串的长度为20。

(3)SAS语句:Input @’Breed:’ DogBreed :$20.; 读入内容:Rottweiler

读入Breed: 后面的字符串,赋给DogBreed,读入字符串的长度为20,但遇到空格时不再继续读数据。

从原始数据中读入多行数据作为SAS的一条观测

使用行指针:

‘ / ’—— 到下一行读数据

‘#n ’——到第n 行读数据

INPUT City $ State $ / NormalHigh NormalLow #3 RecordHigh RecordLow;

从一行原始数据中读入多个观测

在Input语句末尾使用@@标示,告诉SAS继续读入本行后面的数据。

INPUT City $ State $ NormalRain MeanDaysRain @@;

有选择的读入原始数据

SAS让用户无需读入所有的原始数据,然后再判断是否是用户所需要的数据。用户仅需先读入足够的变量,以判断该条观测是否为自己所需,然后在INPUT语句后以@结尾,以使SAS读数据的指针停在此处,保留此行数据。然后用户使用IF语句判断读入的观测是否为所需数据,若是,则使用第二个INPUT语句继续读入其余数据。

INPUT Type $ @;

IF Type = ’surface’ THEN DELETE;

INPUT Name $ 9-38 AMTraffic PMTraffic;

@ & @@

(1) 均为锁定数据行的标示;

(2) @标示在SAS进入下个循环之前就释放锁定的数据行,而@@标示在继续锁定数据行

在INFILE语句中控制输入的选项

(1)FIRSTOBS=n : 从n条观测开始读入数据

(2)OBS=n 读入n条观测

(3)当读进内存的观测长度小于INPUT语句设定的长度时

当SAS指针到达一条记录的末尾,而在INPUT语句中尚有未读入的变量时,SAS默认继续读入下一行数据。

sas读入数据全解析.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:小学英语语音课教学案例

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: