楼主: hamsik11
1128 2

[有偿编程] 如何生成这样的数据集? [推广有奖]

  • 0关注
  • 3粉丝

副教授

16%

还不是VIP/贵宾

-

威望
0
论坛币
9016 个
通用积分
1.0000
学术水平
5 点
热心指数
8 点
信用等级
4 点
经验
24082 点
帖子
405
精华
0
在线时间
569 小时
注册时间
2011-3-22
最后登录
2020-9-2

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);
关键词:数据集 countw Macro Count list 如何 元素

回帖推荐

freerunning_sky 发表于2楼  查看完整内容

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);
沙发
freerunning_sky 在职认证  发表于 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);

使用道具

藤椅
hamsik11 发表于 2012-2-5 22:41:42 |只看作者 |坛友微信交流群
freerunning_sky 发表于 2012-2-5 22:29
data a;
        x=1;
        y=2;
谢谢 搞定了  我少写了一个东西

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-3 02:43