坚持在未来绽放 发表于 2019-9-4 15:25:09

SAS 读取数据文件


每次读取数据时需要告诉SAS3件事:
1:数据存在哪里?
2:数据的形式
3:创建的数据集的类型(永久/临时)

1 读取SAS数据集

DATA temp;        /*temp 为创建的数据集名称*/
INFILE 'C\mysas\data\temp.dat';        /*数据存放的位置 */
INPUT id 1-4 gender 6 height 8-9 weight 11-13; /*指名数据的类型,用column方式导入,也可根据实际情况使用list或着formatted*/
RUN;
1
2
3
4
2 读取EXCEL 文件

PROC IMPORT DATAFILE='C:\mysas\dtasource\score.xls' /*指明excel文件存放位置*/
OUT = data_set_name /*指定输出数据集名称*/
DBMS = EXCEL REPLACE; /*告知SAS读取的文件类型 ,REPLACE表明若数据集已存在则替换*/
SHEET = "sheet_name"; /*可选,读取文件的sheet名*/
RANGE = "sheetname$a2:c4"; /*可选,读取文件的位置*/
GETNAMRS = NO; /*可选,默认值YES,以读取文件的第一行为标题名*/
MIXED = YES; /*可选,默认值为NO,当某列值同时包含2种数据类型使,默认将数值转换为缺失值,若将其设为YES,则将数值转换位字符类型*/
RUN;
1
2
3
4
5
6
7
8
3 在使用DATA步读取数据集时,还有以下选项:
INFILE 下的选项 DLM= ,若使用列表读取数据集,且使用空格分割数据,则不需要DLM选项,
若分隔符为逗号,则DLM= ‘,’;
若分隔符为制表符,则DLM= ‘09’X;
DSD选项:忽略用引号括起来的分隔符,不会把引号作为数值的一部分读取,将两个连续的分隔符视为缺失值
MISSOVER选项:告知SAS当前行数据不够时,不要跳到下一行继续读取。
FIRSROBS = 选项告诉SAS从第几行数据开始读取,
OBS= 选项告诉SAS读至第几行;

例:
DATA example1;
INFILE 'C\mysas\data\temp.txt' DLM='09'X MISSOVER FIRSTOBS=2;
INPUT ID $ GENDER $ SCORE;
RUN;
1
2
3
4
5
NOTE:在读取数据的时候,首先要查看原始数据源,在无法确定数据中的分隔符或者列宽时,
可运用SAS操作界面导入相应的数据,然后查看Log,根据log中的代码编写SAS code。
采取LIST 导入,column导入,或者Formatted 导入
页: [1]
查看完整版本: SAS 读取数据文件