2016-01-13 151 views
1

例如我已經test1.txt的這樣的FIRSTLINE(標題),導入多個文本文件,並跳過在每個文件

One Two Three 
1 2 3 
4 5 6 

的test2.txt這樣,

One Two Three 
7 8 9 
10 11 12 

Test3的名爲.txt這樣的,

One Two Three 
13 14 15 
16 17 18 

什麼是它們導入到SAS表,並創建這樣的事情最好的辦法,

One Two Three 
1 2 3 
4 5 6 
7 8 9 
10 11 12 
13 14 15 
16 17 18 

這裏是我的原代碼,

data want; 
    infile "text*.txt" delimiter=" " firstobs=2; 
    input One Two Three; 
run; 

只有在第一個文件的標題行由firstobs聲明跳過。我可以通過編寫重複代碼來實現這一點,但顯然這並不好。我也嘗試了變量EOV來檢測文件的開始,但是我無法使它工作。什麼是最好的方式來做到這一點?提前致謝!

+0

EOV infile語句選項檢測串聯中每個新文件的開始。 –

+0

老實說我已經嘗試過,但有一個while while循環我仍然無法使它工作。 –

回答

2

在INFILE語句中使用EOV選項。這是一種方法。

data want; 
    infile "text*.txt" dsd dlm='09'X truncover eov=eov firstobs=2; 
    input @; 
    if eov then input; 
    input One Two Three; 
    eov=0; 
run; 

使用FIRSTOBS=2 INFILE選擇跳過第一個文件頭,然後使用條件輸入跳過了別人的頭。在測試EOV標誌之前,您需要確保通過預先讀取該行來正確設置EOV標誌。您需要重置數據步驟底部的EOV標誌。

+0

謝謝你的幫助。當我運行代碼時,它仍會嘗試讀取第二個文件的標題並錯過其第二行。然後成功跳過第三個文件的標題並錯過了最後一行....必須有一些邏輯錯誤在繼續。我試圖解決它,但還沒有成功。 –

+0

這就是我發佈未經測試的代碼。嘗試更正的版本。 – Tom

+0

謝謝!這工作和解釋是完全意義上的! –

相關問題