【问题标题】:Efficiently read specific rows of input file in SAS高效读取 SAS 中输入文件的特定行
【发布时间】:2012-02-04 14:15:31
【问题描述】:

我需要从二进制文件创建一个 SAS 数据集。我的代码是:

data test;
 infile 'D:\test\T201.bin' lrecl=12 recfm=f;
 input time IB4. v1 IB4. v2 IB4. ;
run;

有没有办法从输入文件中读取特定的行号?例如,假设我想保留第 42000 到 44000 行。我可以添加:

if 42000<=_n_<=44000

但我想知道是否有更有效的方法来做到这一点。我的理解是,这种方法会导致 SAS 读取所有行,但只保留输出数据集中指定的行。有没有办法让 SAS 直接跳转到特定的行? (效率在这里非常重要,因为我有 TB 的数据要处理。)

【问题讨论】:

    标签: sas


    【解决方案1】:

    我不知道确切的性能,但你可以试试 firstobs 和 obs 选项。它将允许从文件中间读取一系列记录。

    data test;
    infile 'D:\test\T201.bin' lrecl=12 recfm=f firstobs=42000 obs=44000;
    input time IB4. v1 IB4. v2 IB4. ;
    run;
    

    【讨论】:

    • 谢谢。我刚刚进行了一些测试,这种方法比我做的要快得多。
    • 我相信这是最有效的方法,你应该选择这个作为答案。
    猜你喜欢
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    相关资源
    最近更新 更多