我有一个数据集,其中包含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 =;它在宏中显示错误的结果。我想在宏的其他语句中使用这个变量结果。
答案 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;
当然,您可以使用quote
或nliteral
来提高效果。
data _NULL_;
set sashelp.class;
retain namelist;
length namelist $500;
namelist=catx(' ',namelist,nliteral(name));
put namelist=;
run;