SAS catx函数删除空格

时间:2016-10-06 19:31:25

标签: sas sas-macro

我有一个数据集,其中包含1列和n行,如下所示:

数据集1:

Column1
--------
AAA AAA
BBB BBB
CCC CCC
DDD DDD
EEE EEE

我想从这个数据中得到1行,如:

“AAA AAA”n“BBB BBB”n“CCC CCC”n“DDD DDD”n“EEE EEE”n

我将在宏观中做到这一点。

我用过catx函数。但该函数从数据中删除空格..

我像这样使用do循环:

 .
 .
 .
 .
data _NULL_;
          if &I^=1 then do;
            frstclmn=&frstclmn||""""||"&clmn"||""""||"n ";
        end;
        run;
 .
 .
 .

但我无法在数据语句中单独执行变量操作。

我该怎么办?感谢

编辑:

%MACRO result;
        data _NULL_;
          set &LIB_NAME..column_list;
          retain namelist;
          length namelist $5000;
            namelist=catx(' ',namelist,cats('"',name,'"n'));
        run;

---how can I use "namelist" variable here ? out of data statement.---

%MEND result;

此代码运行完美。现在我想从这个数据语句中使用这个namelist变量。如果我像这样打印%put& namelist =;它在宏中显示错误的结果。我想在宏的其他语句中使用这个变量结果。

2 个答案:

答案 0 :(得分:4)

我不清楚你寻求什么输出。也许这会给你一些提示。

(?=\p{Lu})

答案 1 :(得分:1)

上面显示的sql方法data _null_是更好的方法,但如果您要在数据步骤中执行此操作,请使用' '作为分隔符。

    data _NULL_;
      set sashelp.class;
      retain namelist;
      length namelist $500;
      namelist=catx(' ',namelist,cats('"',name,'"n'));
      put namelist=;
    run;

当然,您可以使用quotenliteral来提高效果。

    data _NULL_;
      set sashelp.class;
      retain namelist;
      length namelist $500;
      namelist=catx(' ',namelist,nliteral(name));
      put namelist=;
    run;
相关问题