-1
我有一個文件夾與多個文件。每個類別都不同(例如:5個文件是製表符分隔的,5個是csv文件,5個是管道分隔符等)。我如何使用SAS導入它們? (我不想單獨導入它們。)如何在sas中導入多個不同的分隔文件?
我有一個文件夾與多個文件。每個類別都不同(例如:5個文件是製表符分隔的,5個是csv文件,5個是管道分隔符等)。我如何使用SAS導入它們? (我不想單獨導入它們。)如何在sas中導入多個不同的分隔文件?
有趣的問題。如果你可以通過查看線來確定分隔符的邏輯,那麼它應該很容易。讓我們來創建一些示例文件。
%let path=%sysfunc(pathname(work));
data _null_;
set sashelp.class ;
if _n_ < 7 then file "&path/1_csv.txt" dsd dlm=',';
else if _n_ < 13 then file "&path/2_tab.txt" dsd dlm='09'x;
else file "&path/3_pipe.txt" dsd dlm='|' ;
put (_all_) (+0);
run;
現在,讓我們嘗試閱讀它們。首先閱讀該行,然後根據您看到的內容設置DLM變量。然後讀取數據。
data want ;
if 0 then set sashelp.class ;
length dlm $1.;
infile "&path/*.txt" dsd dlm=dlm truncover;
input @;
if indexc(_infile_,'09'x) then dlm='09'x;
else if indexc(_infile_,'|') then dlm='|';
else if indexc(_infile_,',') then dlm=',';
input name -- weight;
run;
現在讓我們來比較結果與原始數據。注意:根據操作系統的不同,可能無法按照生成的順序讀取文件,因此您可能需要在嘗試比較之前進行排序。
proc compare data=want compare=sashelp.class; run;
這些文件是相同的結構,否則,即相同的變量? – Reeza
你沒有提到你將如何導入細節很重要。如果您使用數據步驟程序,則可以將它們全部讀取爲一個流。查看INFILE語句文檔,您將看到DLM =可以指定一個包含分隔符的變量。 –
他們都有相同的變量。我必須閱讀它們並將它們追加爲一個文件。我想知道是否存在單個讀取多個文件的方法? –