楼主: 小鳄鱼a
554 10

列出字母组合 [推广有奖]

  • 6关注
  • 10粉丝

已卖:280份资源

学科带头人

3%

还不是VIP/贵宾

-

威望
0
论坛币
125 个
通用积分
0.0040
学术水平
40 点
热心指数
45 点
信用等级
43 点
经验
32801 点
帖子
1185
精华
0
在线时间
1539 小时
注册时间
2009-7-16
最后登录
2018-10-5

楼主
小鳄鱼a 发表于 2014-12-4 15:02:02 |AI写论文
100论坛币
a  b c d1 d2 e f1 f2 f3 f4 f5 g h   都是宏变量


总共有8类字母 a b c d e f g h
每类字母中又有该类的变量
现在要求,在8类字母中取其中的6类,而对于那些一类字母中多于1个变量的字母,则在这类字母中取其中的一个

如何列举出所有的情况


keep  每种情况产生的组合

最佳答案

jl60156 查看完整内容

%macro test; %let x1=a1 a2; %let x2=b; %let x3=c; %let x4=d; %let x5=e; %let x6=f1 f2 f3; %let x7=g; %let x8=h; %let k=6; %let ncomb=%sysfunc(comb(8,&k)); %do i=1 %to &ncomb+1; %syscall allcomb(i, k, x1, x2, x3, x4, x5, x6, x7, x8); %do j=1 %to 6; %let n&j=%sysfunc(countw(&&x&j)); %end; %do m1=1 %to &n1; %let y1=%scan(&x1,&m1) ...
关键词:keep 字母 如何

沙发
jl60156 发表于 2014-12-4 15:02:03
%macro test;
   %let x1=a1 a2;
   %let x2=b;
   %let x3=c;
   %let x4=d;
   %let x5=e;
   %let x6=f1 f2 f3;
   %let x7=g;
   %let x8=h;
   %let k=6;
   %let ncomb=%sysfunc(comb(8,&k));
   %do i=1 %to &ncomb+1;
      %syscall allcomb(i, k, x1, x2, x3, x4, x5, x6, x7, x8);
                  %do j=1 %to 6;
                %let n&j=%sysfunc(countw(&&x&j));
                  %end;
                 %do m1=1 %to &n1;
                        %let y1=%scan(&x1,&m1);
                        %do m2=1 %to &n2;
                                %let y2=%scan(&x2,&m2);
                                %do m3=1 %to &n3;
                                        %let y3=%scan(&x3,&m3);
                                        %do m4=1 %to &n4;
                                                %let y4=%scan(&x4,&m4);
                                                %do m5=1 %to &n5;
                                                        %let y5=%scan(&x5,&m5);
                                                        %do m6=1 %to &n6;
                                                                %let y6=%scan(&x6,&m6);
                                                               
data data&i.x1&m1.x2&m2.x3&m3.x4&m4.x5&m5.x6&m6        (keep=&y1 &y2 &y3 &y4 &y5 &y6);
        set yourdata;
run;       

                                                                %let ncomind&i.x1&m1.x2&m2.x3&m3.x4&m4.x5&m5.x6&m6=&y1 &y2 &y3 &y4 &y5 &y6;
                                                                %put ncomind&i.x1&m1.x2&m2.x3&m3.x4&m4.x5&m5.x6&m6=&&ncomind&i.x1&m1.x2&m2.x3&m3.x4&m4.x5&m5.x6&m6;
                                                        %end;
                                                %end;
                                        %end;
                                %end;
                        %end;
                %end;
   %end;

%mend;
     
%test;
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
小鳄鱼a + 5 + 4 + 4 + 4 精彩帖子

总评分: 论坛币 + 5  学术水平 + 4  热心指数 + 4  信用等级 + 4   查看全部评分

藤椅
yanjiyunning 发表于 2014-12-4 15:57:41
data test_a  test_b test_c test_d1 test_d2 test_e test_f1 test_f2 test_f3 test_f4 test_f5 test_g;
input a @@;
datalines;
0
1
;
run;

proc sql  noprint;
create table test
as  
select test_a.a as a,  test_b.a as b,  test_c.a as c ,test_d1.a as d1, test_d2.a as d2 ,test_e.a as e ,test_f1.a as f1 ,test_f2.a as f2, test_f3.a as f3 ,test_f4.a as f4 ,test_f5.a as f5, test_g.a as g
from test_a , test_b ,test_c ,test_d1, test_d2 ,test_e ,test_f1 ,test_f2, test_f3 ,test_f4 ,test_f5, test_g ;
quit;

data test1;
set test;
n=a +b +c+ d1+ d2+ e +f1+ f2+ f3+ f4+ f5+ g;
if n=6 and d1+ d2<=1 and f1+ f2+ f3+ f4+ f5<=1;
run;

proc print;
run;
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
小鳄鱼a + 5 + 4 + 4 + 4 精彩帖子

总评分: 论坛币 + 5  学术水平 + 4  热心指数 + 4  信用等级 + 4   查看全部评分

板凳
小鳄鱼a 发表于 2014-12-4 20:26:41
yanjiyunning 发表于 2014-12-4 15:57
data test_a  test_b test_c test_d1 test_d2 test_e test_f1 test_f2 test_f3 test_f4 test_f5 test_g;
...
没看懂啊   ,是不是我的意思表达错了

报纸
小鳄鱼a 发表于 2014-12-4 20:28:03
yanjiyunning 发表于 2014-12-4 15:57
data test_a  test_b test_c test_d1 test_d2 test_e test_f1 test_f2 test_f3 test_f4 test_f5 test_g;
...
a b 等这些事宏变量吗      不是先用let 去定义吗

地板
小鳄鱼a 发表于 2014-12-4 23:15:42
jl60156 发表于 2014-12-4 23:08
%macro test;
   %let x1=a1 a2;
   %let x2=b;
多谢高手

7
小鳄鱼a 发表于 2014-12-4 23:20:04
yanjiyunning 发表于 2014-12-4 15:57
data test_a  test_b test_c test_d1 test_d2 test_e test_f1 test_f2 test_f3 test_f4 test_f5 test_g;
...
出现了很多warning     不影响吧



ncomind10x11x21x31x41x51x62=a1 b c g h f2

WARNING: 从未引用过 DROP、KEEP 或 RENAME 列表中的变量 a1。
NOTE: 从数据集 WORK.ABCD. 读取了 1 个观测
NOTE: 数据集 WORK.DATA10X11X21X31X41X51X63 有 1 个观测和 5 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间          0.01 秒
      CPU 时间          0.01 秒


ncomind10x11x21x31x41x51x63=a1 b c g h f3

WARNING: 从未引用过 DROP、KEEP 或 RENAME 列表中的变量 a2。
NOTE: 从数据集 WORK.ABCD. 读取了 1 个观测
NOTE: 数据集 WORK.DATA10X12X21X31X41X51X61 有 1 个观测和 5 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间          0.00 秒

8
小鳄鱼a 发表于 2014-12-4 23:20:38
jl60156 发表于 2014-12-4 15:02
%macro test;
   %let x1=a1 a2;
   %let x2=b;
出现了很多warning     不影响吧



ncomind10x11x21x31x41x51x62=a1 b c g h f2

WARNING: 从未引用过 DROP、KEEP 或 RENAME 列表中的变量 a1。
NOTE: 从数据集 WORK.ABCD. 读取了 1 个观测
NOTE: 数据集 WORK.DATA10X11X21X31X41X51X63 有 1 个观测和 5 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间          0.01 秒
      CPU 时间          0.01 秒


ncomind10x11x21x31x41x51x63=a1 b c g h f3

WARNING: 从未引用过 DROP、KEEP 或 RENAME 列表中的变量 a2。
NOTE: 从数据集 WORK.ABCD. 读取了 1 个观测
NOTE: 数据集 WORK.DATA10X12X21X31X41X51X61 有 1 个观测和 5 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间          0.00 秒

9
小鳄鱼a 发表于 2014-12-4 23:32:19
jl60156 发表于 2014-12-4 15:02
%macro test;
   %let x1=a1 a2;
   %let x2=b;
WARNING: 从未引用过 DROP、KEEP 或 RENAME 列表中的变量 a1。
WARNING: 从未引用过 DROP、KEEP 或 RENAME 列表中的变量 d。
NOTE: 从数据集 WORK.ABCD. 读取了 1 个观测
NOTE: 数据集 WORK.DATA1X11X21X31X41X51X61 有 1 个观测和 4 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间          0.00 秒
      CPU 时间          0.00 秒


ncomind1x11x21x31x41x51x61=a1 b c d e f1

WARNING: 从未引用过 DROP、KEEP 或 RENAME 列表中的变量 a1。
WARNING: 从未引用过 DROP、KEEP 或 RENAME 列表中的变量 d。
NOTE: 从数据集 WORK.ABCD. 读取了 1 个观测
NOTE: 数据集 WORK.DATA1X11X21X31X41X51X62 有 1 个观测和 4 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间          0.00 秒
      CPU 时间          0.01 秒


ncomind1x11x21x31x41x51x62=a1 b c d e f2

WARNING: 从未引用过 DROP、KEEP 或 RENAME 列表中的变量 a1。
WARNING: 从未引用过 DROP、KEEP 或 RENAME 列表中的变量 d。
NOTE: 从数据集 WORK.ABCD. 读取了 1 个观测
NOTE: 数据集 WORK.DATA1X11X21X31X41X51X63 有 1 个观测和 4 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间          0.00 秒
      CPU 时间          0.01 秒


ncomind1x11x21x31x41x51x63=a1 b c d e f3

WARNING: 从未引用过 DROP、KEEP 或 RENAME 列表中的变量 a2。
WARNING: 从未引用过 DROP、KEEP 或 RENAME 列表中的变量 d。
NOTE: 从数据集 WORK.ABCD. 读取了 1 个观测
NOTE: 数据集 WORK.DATA1X12X21X31X41X51X61 有 1 个观测和 4 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间          0.00 秒
      CPU 时间          0.00 秒

10
jl60156 发表于 2014-12-4 23:54:27
It seems that the variables a1, a2 and d are not in your original  data. make sure the variables are present in your  original  data when doing   
   %let x1=a1 a2;
   %let x2=b;
   %let x3=c;
   %let x4=d;
   %let x5=e;
   %let x6=f1 f2 f3;
   %let x7=g;
   %let x8=h;

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

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