將指定資料夾下的所有 xlsx檔案匯入SAS

2021-09-01 00:09:01 字數 1894 閱讀 6712

注:這種方法不止可以用來批量匯入excel檔案,也可以匯入其它型別的檔案,重要的是這裡面的邏輯思想。

1. 指定需要匯入的folder的路徑,即需要匯入檔案的字尾

filename folder pipe "dir d:\home\data\files\*.xlsx /b";
2. 將指定資料夾下的所有的檔名(帶檔案字尾如:.xlsx)放入到data files中

data files;

length filename $100.;

infile folder truncover;

input filename $100.;

call symput("rows", _n_);  * 匯入了多少個檔案,即data files中的行號;

run;

3. 後面如果需要合併資料集,這裡需要先建立乙個空的資料集 

data all_data;

length var1 $30. var2 $5. var3 5. var4 6. var5 6.;

run;

4. 匯入乙個folder中所有的.xlsx檔案

/* path 需要匯入的.xlsx檔案所在的資料夾路徑;data 即上文中生成的資料集:file;rows 即:cll symput(「rows」, _n_);這裡的巨集變數 rows。 */

%macro importfiles(path, data, rows);

%do i=1 %to &rows.;

data _null_;

set &data.;

if _n_ = &i.;

* 將取出的檔名,賦值到macro變數file;

call symput("file", trim(filename));

* 因為sas data set不能使用中文命名,所以這裡根據檔名的實際進行了重新命名,需要根據實際需求更新;     

call symput("outname", catt(substr(filename, 1,7), &i.));

run;

proc import datafile="&path.&file."

dbms = xlsx

out = &outname.

replace;

getnames = yes;

run;

* 以上是將資料夾中的所有.xlsx檔案匯入到sas中,如果同時還需要將所有的資料合併到乙個資料集中,可以使用以下方法; 

* 如果是可以直接連線的資料;

data all_data; * all_data 在使用前一定是存在的,這個可以用乙個data step建立乙個空資料集;

set all_data &outname.;  * 如果有where,這裡where的作用範圍只在最靠近的那個資料集,這裡需要注意;

run;

*如果是需要合併的資料;

proc sort data=all_data out=sorted_all_data;

by var1 var2 var3;

run;

proc sort data=&outname. out=sorted_outname_data;

by var1 var2 var3;

run;

data all;

merge sorted_all_data sorted_outname_data;

by var1 var2 var3;

run;

%end;

%mend;

5. 使用

%importfiles(d:\home\data\files, file, &rows.);

讀取指定資料夾下的所有檔案

c 怎樣讀取windows資料夾名和該資料夾中的excel表中的資料,並把讀到的資料夾名和excel表中的資料作為資料向插入到sql sever2000的資料表中 private void button1 click 2 object sender,system.eventargs e privat...

C 批量刪除指定資料夾下指定檔名的所有資料夾

private void deletedirbyname string rootpath,string name int indexsplit rootpath.lastindexof if indexsplit 0 if indexsplit 0 if dirname.tolower name.t...

python 複製指定資料夾下所有檔案

get all file by type 根據接收到的path 和type,獲得該path下所有以type型別結尾的檔案 get all file by string 根據接收到的path 和 list,獲得該path下所有的,包含list 裡字串的檔案 copy file by type 根據接收...