【问题标题】:How to import and export multiple data using sas macro?如何使用 sas 宏导入和导出多个数据?
【发布时间】:2012-11-15 11:04:43
【问题描述】:

您好,我正在尝试在 sas 中为以下函数做一个宏

我有多个 sas 文件(apr12part1,apr12part2,...,aug12part1,aug12part2),对于每个文件(例如:apr12part1),我会做一些处理,这会给我三个输出(例如:apr12part1out1,apr12part1out2 ,pr12part1out3)。

我尝试使用宏,但不是很成功。有人可以帮我吗?非常感谢! 我使用的代码是这样的

%macro test(month=,part=);
   ...FROM EC100002.&month_part_&part
   ...
   proc export data=SASUSER.Out1 outfile='G:\Output\Output1_&month_&part.csv' dbms=csv replace;
   proc export data=SASUSER.Out2 outfile='G:\Output\Output2_&month_&part.csv' dbms=csv replace;
   proc export data=SASUSER.Out3 outfile='G:\Output\Output3_&month_&part.csv' dbms=csv replace;
   run;
%mend test

%test(月=apr12,part=1)

【问题讨论】:

    标签: import dataset export sas


    【解决方案1】:

    尝试添加“点”将宏变量连接成一个完整的字符串。此外,您必须使用双引号,而不是单引号。像这样的:

    proc export data=SASUSER.Out1 
         outfile="G:\Output\Output1_&month._&part..csv" dbms=csv replace;
    

    注意&part 变量后面有两个“点”;第一个是连接运算符,第二个是文件名的一部分。

    你可能有类似的代码没有显示的问题,所以也要检查一下。

    【讨论】:

    • 谢谢!我试过你的方法,但日志给了我一些错误,无法完成运行警告:当前正在处理的引用字符串的长度已超过 262 个字符。您可能有不平衡的引号。
    • 嗯,该消息意味着您的程序中某处有一个杂散的单引号或双引号。如果您以交互方式执行此操作,您的会话可能会搞砸。您可以尝试通过提交以下代码来清除它:*'; *"; *); */; %mend; run;(称为 SAS“魔术字符串”)。
    • 我在想引号内的 &month 重要吗?这是否在 SAS 中验证?
    • 我应该把代码放在哪里?在 %mend 之前的宏底部?那我还需要 %mend 吗?
    • 不,该代码不应成为任何程序的一部分。每当您收到类似的警告消息时,您都需要手动“提交”它。保存您的编程代码并重新启动您的 SAS 会话可能会更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-06
    • 1970-01-01
    • 2023-03-10
    • 2017-03-03
    • 2023-03-25
    • 2021-01-22
    相关资源
    最近更新 更多