2015-10-30 40 views
-1

我有一個文件夾與多個文件。每個類別都不同(例如:5個文件是製表符分隔的,5個是csv文件,5個是管道分隔符等)。我如何使用SAS導入它們? (我不想單獨導入它們。)如何在sas中導入多個不同的分隔文件?

+0

這些文件是相同的結構,否則,即相同的變量? – Reeza

+0

你沒有提到你將如何導入細節很重要。如果您使用數據步驟程序,則可以將它們全部讀取爲一個流。查看INFILE語句文檔,您將看到DLM =可以指定一個包含分隔符的變量。 –

+0

他們都有相同的變量。我必須閱讀它們並將它們追加爲一個文件。我想知道是否存在單個讀取多個文件的方法? –

回答

0

有趣的問題。如果你可以通過查看線來確定分隔符的邏輯,那麼它應該很容易。讓我們來創建一些示例文件。

%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; 
相關問題