2011-11-28 82 views
1

我在逗號分隔的.txt文件中有我的數據。我正在編寫一個常規的infile語句將該文件導入到sas數據集中。這些數據大約有250萬行。然而,在第37314行和更多行中,我有垃圾值。 SAS僅在垃圾值行上方的行中導入行,因此我沒有獲得全部250萬行但具有37314行的數據集。我想編寫一個代碼,它在編寫這個infile時負責處理這些垃圾行,並且不會接受它們或刪除它們。總而言之,我需要所有250萬行,因爲在垃圾行之間我無法獲得。連續的垃圾值(sas)

任何幫助,將不勝感激。

+0

請發表您的代碼 –

+0

什麼是垃圾的價值? – itzy

回答

4

可以讀取整行輸入緩存使用只是一個

Input; 

聲明。然後,您可以分別使用以下代碼解析字段:

_infile_ 

變量。

例子:

data _null_; 
infile datalines firstobs=2; 
input; 
    city = scan(_infile_, 1, ' '); 
    char_min = scan(_infile_, 3, ' '); 
    char_min = substr(char_min, 2, length(char_min)-2); 
    minutes = input(char_min, BEST12.); 
put city= minutes=; 
datalines; 
    City Number Minutes Charge 
    Jackson 415-555-2384 <25> <2.45> 
    Jefferson 813-555-2356 <15> <1.62> 
    Joliet 913-555-3223 <65> <10.32> 
    ; 
run; 

Working with Data in the Input Buffer.

2

您也可以使用?和??輸入語句的修飾符'忽略'任何問題行。

這是link to the doc。查看標題「格式修飾符的錯誤報告」。

一個例子:

data x; 
    format my_num best.; 
    input my_num ?? ; 

    ** 
    ** POSSIBLE ERROR HANDLING HERE: 
    *; 
    if my_num ne . then do; 
    output; 
    end; 

datalines; 
a 
; 
run; 
+0

不錯......不知道修飾符+1 –