SAS 中读取文件的方式

首先明确文件的格式:

1. 文本文件

2. xlsx 文件(电子表格文件)

对于文本文件,由于有很大的变化性,比如使用空格分隔,使用逗号分隔,使用冒号分隔等等,当然也可以按列读取。

 (1)使用空格分隔

原始数据为:

 

1 * 使用空格分隔的文件数据 ;
2 data temp;
3 infile "C:\Users\hr\Desktop\person\raw.txt" delimiter=" ";
4 input age weight;
5 run;
6 
7 proc print data=temp;
8 run;

 结果是:

(2)使用逗号、冒号隔开,只需要将 delimiter= 中的内容换掉即可,其他同上。

1 * 使用空格分隔的文件数据 ;
2 data temp;
3 infile "C:\Users\hr\Desktop\person\raw.txt" delimiter=",";
4 input age weight;
5 run;
6 
7 proc print data=temp;
8 run;

(3)使用 tab 隔开

1 * 使用tab分隔的文件数据 ;
2 data temp;
3 infile "C:\Users\hr\Desktop\person\raw.txt" delimiter="09"x;
4 input age weight;
5 run;
6 
7 proc print data=temp;
8 run;

 

对于 xlsx 文件,和上面两个不太一样。

原始数据为:

 

(1)使用 sql 语句进行读取

 1 * 读取表格文件的方法 ;
 2 /* 第一种使用 sql 语句 */
 3 proc sql;
 4 connect to excel(path="C:\Users\hr\Desktop\person\raw.xlsx");
 5 create table person as
 6 select
 7     * 
 8 from
 9     connection
10 to
11     excel(select * from [sheet1$]);
12 disconnect from excel;
13 quit;

结果为:

 

(2)使用 import procedure 进行读取,常使用这个,这个可以使用多个格式的文件。

 1 /* 使用 proc import 导入外部文件 */
 2 proc import out=Mysas.person2 datafile="C:\Users\hr\Desktop\person\raw.xlsx" dbms=excel replace;
 3     range = "Sheet1$";
 4     getnames = yes;
 5     mixed = no;
 6     scantext = yes;
 7     usedate = yes;
 8     scantime = yes;
 9 run;
10 
11 proc print data=person;
12 run;

结果为:

 

posted @ 2019-07-03 15:23  Guai人  阅读(3818)  评论(0编辑  收藏  举报