首先明確文件的格式:
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;
結果為: