楼主: hamsik11
1343 2

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

  • 0关注
  • 3粉丝

已卖:51份资源

副教授

16%

还不是VIP/贵宾

-

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

楼主
hamsik11 发表于 2012-2-5 21:53:01 |AI写论文
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
拉您进交流群
GMT+8, 2025-12-30 19:28