楼主: akalius
6403 20

请教大家一个遍历变量选数据集的问题 [推广有奖]

  • 10关注
  • 3粉丝

已卖:155份资源

讲师

50%

还不是VIP/贵宾

-

威望
0
论坛币
3999 个
通用积分
2.8543
学术水平
4 点
热心指数
6 点
信用等级
6 点
经验
7835 点
帖子
262
精华
0
在线时间
613 小时
注册时间
2009-7-22
最后登录
2025-3-18

楼主
akalius 学生认证  发表于 2014-8-2 07:48:25 |AI写论文
10论坛币
关键词:数据集

回帖推荐

bobguy 发表于12楼  查看完整内容

Here i give a simpler solution which uses comb and allcomb routine to generate all data sets with keep option. 278 data _null_; 279 file 'c:\temp\8s6.sas'; 280 array x(8) $1 ('a' 'b' 'c' 'd' 'e' 'f' 'g' 'h'); 281 k=6; 282 n=dim(x); 283 nsets=comb(n, k); 284 do j=1 to nsets; 285 call allcomb(j, k, of x[*]); 286 put 'temp' j '(keep=' x1-x6 ')'; 287 ...

沙发
freerunning_sky 在职认证  发表于 2014-8-2 07:48:26
  1. data a;
  2.         input a b c d e f g h;
  3.         cards;
  4.         10 20 30 40 50 60 70 80
  5.         11 21 31 41 51 61 71 81
  6.         12 22 32 42 52 62 72 82
  7.         ;
  8. run;

  9. %let var_list=a b c d e f g h;


  10. %macro tmp;
  11. %let m=1;
  12. %do i=1 %to 7;
  13.         %do j=&i+1 %to 8;
  14.                 data b&m.;
  15.                         set a;
  16.                         keep a1-a6;
  17.                         %let x=1;
  18.                         %do y=1 %to 8;
  19.                                 %let a3=%scan(&var_list,&y," ");
  20.                                 %if &y.~=&i. & &y.~=&j. %then %do;
  21.                                         a&x.=&a3.;;
  22.                                         %let x=%eval(&x.+1);
  23.                                 %end;
  24.                         %end;
  25.                 run;
  26.                 %let m=%eval(&m.+1);
  27.         %end;
  28. %end;
  29. %mend;
  30. %tmp;
复制代码

藤椅
learsaas 发表于 2014-8-2 08:24:31
macro can finish your task

板凳
freerunning_sky 在职认证  发表于 2014-8-2 09:10:50
是从8个中任意选取6个生成一个新的数据集,穷举完?那有28个数据集。。

报纸
akalius 学生认证  发表于 2014-8-2 09:23:00
freerunning_sky 发表于 2014-8-2 09:10
是从8个中任意选取6个生成一个新的数据集,穷举完?那有28个数据集。。
是的  但是不知道怎么选择    怎么给变量设置标识   然后循环

地板
akalius 学生认证  发表于 2014-8-2 09:43:56
谢谢111111111111111111

7
akalius 学生认证  发表于 2014-8-2 09:44:29
谢谢vvvvvvvvvvvvvvvvvvvvvvv

8
learsaas 发表于 2014-8-2 10:23:06
再强调一下,9.13及以前的版本貌似只能用宏……

9
akalius 学生认证  发表于 2014-8-2 15:37:57
freerunning_sky 发表于 2014-8-2 07:48
非常感谢    但是  %let a3=%scan(&var_list,&y," ");
                                %if &y.~=&i. & &y.~=&j. %then %do;
                                        a&x.=&a3.;;  是想做什么啊  ,大概什么一种思路呢  ,能否帮忙解释下

10
akalius 学生认证  发表于 2014-8-2 20:23:44
freerunning_sky 发表于 2014-8-2 07:48
还有怎么把他们的变量名也保持原来的

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-23 18:01