【问题标题】:Loop over strings and read in files and save [duplicate]循环字符串并读入文件并保存[重复]
【发布时间】:2015-05-29 23:29:37
【问题描述】:

我对 SAS 很陌生。我有一堆 csv 格式的文件,我想读入 SAS。我需要逐一阅读并保存它们,可以单独保存,也可以保存在一个大文件中。 (虽然文件可能真的很大......不知道如何最好地处理这个 - 也许是 MySQL?)

假设文件是​​这样命名的:

file97.csv
file98.csv
file99.csv
file00.csv
file01.csv
file02.csv

如何在循环语句中循环 97, 98, 99, 00, 01, 02

如果我只导入,比如file97.csv,代码类似于:

PROC IMPORT OUT= WORK.data97 
            DATAFILE= "\...\file97.csv" 
            DBMS=CSV REPLACE;
     GETNAMES=YES;
     DATAROW=2; 
RUN;

我会写什么代码来循环?我基本上只需要更改97s。

【问题讨论】:

    标签: string loops import sas


    【解决方案1】:

    由于您要循环遍历 Proc import,因此您必须使用 Macros,而且由于您的 Numbers 97, 98, 99, 00, 01, 02 不是连续的,您将不得不使用解决方法。

    %let files=97,98,99,00,01,02;
    %macro loop_over;
    %do i=1 %to %sysfunc(countw("&files."));
    PROC IMPORT OUT= WORK.data%sysfunc(scan("&files.",&i.,",")) 
                DATAFILE= "\...\file%sysfunc(scan("&files.",&i.,",")).csv" 
                DBMS=CSV REPLACE;
         GETNAMES=YES;
         DATAROW=2; 
    RUN;
    %end;
    %mend;
    %loop_over;
    

    【讨论】:

    • 非常感谢。这太棒了!一件小事——第四行末尾需要分号吗?
    猜你喜欢
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 2016-02-12
    • 2013-04-08
    • 1970-01-01
    • 2014-09-25
    • 2012-09-24
    • 2021-07-13
    相关资源
    最近更新 更多