2011-11-28 84 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 –