Loops 使用年-月名称将导出从SAS循环到.dta格式

Loops 使用年-月名称将导出从SAS循环到.dta格式,loops,sas,Loops,Sas,我是STATA用户,因此不熟悉SAS的使用。但是,我当前项目所需的所有文件都以SAS格式存储,因此我希望使用SAS代码将它们从SAS转换为.dta格式。 这些文件以每月一次的方式存储,如下所示: 1976年-x1976M1、x1976M2、x1976M3。。。。x1976M12 其中1976是文件夹,每个月(如x1976M1)是一个包含该月和该年观察结果的文件 我想将这些文件导出为.dta格式,具有相同的文件结构,以便可以轻松地将它们读入STATA 对于是否可以循环每个文件夹,或者是否必须单独循

我是STATA用户,因此不熟悉SAS的使用。但是,我当前项目所需的所有文件都以SAS格式存储,因此我希望使用SAS代码将它们从SAS转换为.dta格式。 这些文件以每月一次的方式存储,如下所示:

1976年-x1976M1、x1976M2、x1976M3。。。。x1976M12

其中1976是文件夹,每个月(如x1976M1)是一个包含该月和该年观察结果的文件

我想将这些文件导出为.dta格式,具有相同的文件结构,以便可以轻松地将它们读入STATA

对于是否可以循环每个文件夹,或者是否必须单独循环每个文件夹,我并不挑剔——有40个文件夹,每个文件夹中有12个文件

因此,我至少需要创建一个从m1到m2的循环,该循环被附加到文件名的末尾,例如filename1976+my,其中y=[1,12]。理想情况下,我将能够创建一个从一个文件夹到下一个文件夹的循环,通过嵌套循环执行此过程


我希望这是令人满意的清楚!如果没有,请评论,我将相应地调整我的问题。

一些同事给我的代码。希望这能帮助任何有同样问题的人。这将需要为每个单独的文件夹更新,因为它不会循环。 干杯

libname name 'G:\folder\'; run`;
    %macro subset1976(month=);

    data subset1976_&month;
        set name.file1976_&month;
        keep xyz /*varnames*/
        ;
        if age>=15;
        noc2011 = soc4+0;
    run;
    %mend;
    %subset1976(month=jan);
    %subset1976(month=feb);
    ....

    %macro export1976(month=);

    proc export data=subset1976_&month outfile='G:\lfs\subset1976_&month.dta' replace dbms=stata; run;

    %mend;
    %export1976(month=jan);
    %export1976(month=feb);

您是否正在寻找用于导入文件的STATA代码?或SAS代码来导出文件?你试过什么。也许你应该买一份Stat/Transfer,让它来为你处理。写一个程序来处理一个文件,然后我们可以帮助你将它转换成宏或手动转换。为避免类型问题,我建议使用CSV进行干净的转换。由于我的数据位于无法访问internet的位置,因此处理CSV更令人沮丧。。我想在SAS中编写导出.csv或.dta的代码。