楼主: cathyingrace
3301 8

[问答] 求大神指导,从一个数据集里条件选择子集 [推广有奖]

  • 3关注
  • 0粉丝

高中生

42%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
163 点
帖子
17
精华
0
在线时间
27 小时
注册时间
2015-1-13
最后登录
2019-12-20

楼主
cathyingrace 学生认证  发表于 2015-3-12 16:25:39 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
有一个100行50列的数据,在50列数据中生成comb(50,k)个数据集,每个数据集是从50列数据选取k列的组合。穷尽所有组合。

注:comb(50,k)即为组合数。

二维码

扫码加我 拉你入群

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

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

关键词:数据集 数据选取 COM 如何

沙发
soporaeternus 发表于 2015-3-13 10:54:24
  1. data test;
  2.         a=1;
  3.         b=2;
  4.         c=3;
  5.         d=4;
  6.         e=5;
  7.         f=6;
  8. run;
  9. %MACRO T(k);
  10. proc contents data=test out=t1(keep=name);quit;
  11. data _null_;
  12.         set t1 end=eof;
  13.         call symputx(compress("v"||_n_),name);
  14.         if eof then call symputx("n",_n_);
  15. run;
  16. %put &n &v2;
  17.         data _null_;
  18.                 length str $10000;
  19.                 %do i=1 %to &n;
  20.                         do a&i=0 to 1;
  21.                 %end;
  22.                         if sum(of a:)=&k then do;
  23.                                 %do i=1 %to &n;
  24.                                         if a&i=1 then str=catx(' ',str,"&&v&i");
  25.                                 %end;
  26.                                 call symputx(compress("keep"||ii),str);
  27.                                         ii+1;
  28.                         end;
  29.                         str='';
  30.                 %do i=1 %to &n;
  31.                         end;
  32.                 %end;
  33.                 call symputx("ii",ii);
  34.         run;
  35.         data
  36.                 %do i=0 %to %eval(&ii-1);
  37.                         test_&i(keep=&&keep&i)
  38.                 %end;
  39.         ;
  40.                 set test;
  41.         run;
  42. %MEND;
  43. %T(3);
复制代码

藤椅
sushe1527 发表于 2015-3-13 10:58:24
soporaeternus 发表于 2015-3-13 10:54
你也在啊 老乡

板凳
soporaeternus 发表于 2015-3-13 11:04:09
sushe1527 发表于 2015-3-13 10:58
你也在啊 老乡
难得来看看......

报纸
cathyingrace 学生认证  发表于 2015-3-14 16:05:13
soporaeternus 发表于 2015-3-13 10:54
第一次发帖,看到你回复我震惊了!!谢谢!!我试一下看。

地板
jl60156 发表于 2015-3-15 10:17:13
%macro test(k,ds);
proc contents data=&ds out=temp1(keep=name varnum);quit;
proc transpose data=temp1 out=temp2 prefix=var;
        var name;
        id varnum;
run;
data _null_;
        set temp2;
        array var[*] $ var:;
        n=dim(var);
          ncomb=comb(n,&k);
   do j=1 to ncomb+1;
      call allcomb(j, &k, of var[*]);
      rc=dosubl('data want'||strip(put(j,best.))||';set yourdata; keep ' %do i=1 %to &k; || var&i %end; ||'; run;');
   end;
run;
%mend;
%test(3,yourdata)
已有 1 人评分论坛币 收起 理由
admin_kefu + 50 热心帮助其他会员

总评分: 论坛币 + 50   查看全部评分

7
cathyingrace 学生认证  发表于 2015-3-17 21:29:13
jl60156 发表于 2015-3-15 10:17
%macro test(k,ds);
proc contents data=&ds out=temp1(keep=name varnum);quit;
proc transpose data=te ...
谢谢啊!!!请教一下你,那么多复杂的语句是靠那本书学的?我买了一本朱世武的SAS编程技术教程,但是上面关于call语句啥都没有。。能否给推荐点学习资料?

8
cathyingrace 学生认证  发表于 2015-3-17 21:30:26
soporaeternus 发表于 2015-3-13 10:54
请教一下你,那么多复杂的语句是靠那本书学的?我买了一本朱世武的SAS编程技术教程,但是上面关于call语句啥都没有。。能否给推荐点学习资料和方法?

9
cathyingrace 学生认证  发表于 2015-3-17 21:30:30
soporaeternus 发表于 2015-3-13 10:54
请教一下你,那么多复杂的语句是靠那本书学的?我买了一本朱世武的SAS编程技术教程,但是上面关于call语句啥都没有。。能否给推荐点学习资料和方法?

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

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