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;
结果为: