楼主: 暴走の数字
1771 3

[问答] sas 中如何分割表格在重组 [推广有奖]

  • 2关注
  • 1粉丝

已卖:5份资源

大专生

80%

还不是VIP/贵宾

-

威望
0
论坛币
1963 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1618 点
帖子
42
精华
0
在线时间
43 小时
注册时间
2012-11-29
最后登录
2020-9-22

楼主
暴走の数字 发表于 2013-3-21 20:43:44 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我现在整理了一张表,表里有几个公共列,这些列每张表都要,剩下的有300列,分别标为a1-a100 b1-b100 t1-t100 我需要每张表都取这里面的3张表 各一个,即a1,b1,t1 以此类推,然后这100张表 还要set到一起去,那位大神能够写一个 能够达到此效果的代码,如果不能用循环的话,就只能一张一张的分割了。
二维码

扫码加我 拉你入群

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

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

关键词:Set 不能用 如何 张一

回帖推荐

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

假设你说的dataset叫做large,里面的变量为common(公共变量),a1-a100 b1-b100 c1-c100 %macro combine(dset=); %do i=1 %to 100; data d&i; set large(keep=common a&i b&i c&i); rename a&i=a b&i=b c&i=c; run;%end; %mend combine; %combine(dset=large) data all; set d1-d100; run;

yongyitian 发表于3楼  查看完整内容

把楼上的code改了一点。 把结果的计算放到了宏里面。 %macro combine(dset=); %do i=1 %to 100; data d&i; set &dset (keep=id date name a&i b&i t&i); rename a&i=a b&i=b t&i=t; run; if &i = 1 then do; data results; set d&1; run; end; else do; data results; set results d&i; run; end; %end; %mend combine; %combin ...

沙发
geniusv 发表于 2013-3-21 22:51:06
假设你说的dataset叫做large,里面的变量为common(公共变量),a1-a100 b1-b100 c1-c100
%macro combine(dset=);
%do i=1 %to 100;
data d&i;
set large(keep=common a&i b&i c&i);
rename a&i=a b&i=b c&i=c;
run;%end;
%mend combine;
%combine(dset=large)
data all;
set d1-d100;
run;

藤椅
yongyitian 发表于 2013-3-22 00:01:35
把楼上的code改了一点。 把结果的计算放到了宏里面。

%macro combine(dset=);
%do i=1 %to 100;
    data d&i;
       set &dset (keep=id date name a&i b&i t&i);
       rename a&i=a b&i=b t&i=t;
    run;
        if  &i = 1 then do;
                 data results;
                     set d&1;
                     run;
                 end;
        else do;
            data results;
            set results d&i;
            run;
        end;
%end;
%mend combine;
%combine(dset=test)

这里是模拟的数据.
data test;
array a{100};  
array b{100};
array t{100};
format date yymmdd10.;
   DO i = 1 to 5;
      Id = i;
          Date = today() +i;
          name = collate(64+i, 66+i);
           do j = 1 to dim(a);
              a(j) = i+j+1;
                  b(j) = i+j+2;
                  t(j) =  i+j+3;
                  end;
          output;
        end;
        drop i j;
run;

板凳
暴走の数字 发表于 2013-3-22 09:48:24
非常感谢楼上两位大神,我马上去试试

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-21 13:00