【问题标题】:junk values in a row( sas)连续的垃圾值(sas)
【发布时间】:2011-11-28 09:27:16
【问题描述】:

我的数据保存在一个逗号分隔的 .txt 文件中。我正在编写一个常规的 infile 语句来将该文件导入 sas 数据集。数据大约有 250 万行。然而,在第 37314 行和更多行中,我有垃圾值。 SAS 仅在垃圾值行上方导入行,因此我没有得到包含所有 250 万行但包含 37314 行的数据集。我想编写一个代码,在编写这个 infile 时会处理这些垃圾行,要么不接受它们,要么删除它们。总而言之,我需要由于垃圾行之间而无法获得的所有 250 万行。

任何帮助将不胜感激。

【问题讨论】:

    标签: sas


    【解决方案1】:

    您可以只使用

    将整行读入输入缓冲区
     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;
      

      【讨论】:

      • 不错...不知道修饰符 +1
      猜你喜欢
      • 1970-01-01
      • 2023-04-05
      • 2014-09-12
      • 2022-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多