全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1288 2
2012-02-05
悬赏 25 个论坛币 已解决
我有一个数据集,里面含有n个元素,譬如是x, y, z, w,现在我要对数据做一个变换,譬如取n个元素的平方,生成n个新变量,变量名为t_x, t_y, t_z, t_w。由于我数据集中元素数目不固定,所以需要写一个宏来完成。
我写了一段宏,却总是不能实现我说的这个功能,有没有高手帮忙改一下?谢谢啦

%macro test(in, out, list);
               data &out;               set ∈
               num=countw("&list");
               do i=1 to num;
               "t_"left((scan("&list",i)) )= (scan("&list",i))**2;
               end;
               drop num i;
               run;
%mend;













































最佳答案

freerunning_sky 查看完整内容

data a; x=1; y=2; z=3; w=4; output; run; %let list=x y z w; %macro test(in, out, list); %let num=%sysfunc(countw(&list)); data &out; set ∈ %do i=1 %to # t_%scan(&list,&i)= %scan(&list,&i)**2; %end; run; %mend; %test(a,b,&list);
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-2-5 21:53:02
data a;
        x=1;
        y=2;
        z=3;
        w=4;
        output;
run;

%let list=x y z w;
%macro test(in, out, list);
        %let num=%sysfunc(countw(&list));
        data &out;               
                set ∈
                %do i=1 %to #
                        t_%scan(&list,&i)= %scan(&list,&i)**2;
                %end;
        run;
%mend;

%test(a,b,&list);
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-2-5 22:41:42
freerunning_sky 发表于 2012-2-5 22:29
data a;
        x=1;
        y=2;
谢谢 搞定了  我少写了一个东西
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群