全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4244 7
2013-04-20
我现在有3个数据集:

data a;
input a b c
cards;
1 2 0.02
2 5 0.04
3 4 0.05
4 7 0.08
;
run;

data b;
input a b c
cards;
1 3 0.02
2 7 0.04
3 4 0.05
4 7 0.08
;
run;

data c;
input a b c
cards;
1 5 0.02
2 6 0.04
3 4 0.05
4 8 0.08
;
run;

我的问题是:
求所有的排列组合满足条件:
a数据集中的b变量小于b数据集中的a变量,b数据集中的b变量小于c数据集中的a变量。然后输出满足条件的a,b,c数据集中的c变量值合成新的记录,最后输出所有可能的排列组合。

这个问题我想了一两年的时间了,不能解决,不知道哪位GGMM帮忙看看怎么写这个SAS程序!
二维码

扫码加我 拉你入群

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

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

全部回复
2013-4-20 17:49:33
还挺麻烦的哈
二维码

扫码加我 拉你入群

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

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

2013-4-20 17:54:55
hbwangliang 发表于 2013-4-20 17:49
还挺麻烦的哈
是啊。。想了两年了。。弄不出来
二维码

扫码加我 拉你入群

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

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

2013-4-20 21:34:58
改了一下你的变量名 如下
data a;
input a1 b1 c1;
cards;
1 2 0.02
2 5 0.04
3 4 0.05
4 7 0.08
; run;

data b;
input a2 b2 c2;
cards;
1 3 0.02
2 7 0.04
3 4 0.05
4 7 0.08
; run;

data c;
input a3 b3 c3;
cards;
1 5 0.02
2 6 0.04
3 4 0.05
4 8 0.08
; run;

条件 1: b1 < a2
条件 2: b2 < a3

看看这是不是你要的结果

proc sql;                  
    create table abc as
    select a.*, b.*, c.*
    from a, b, c;
quit;

data abc1 abc2 abc3;                     
    set abc;
        if b1<a2 then output abc1;            /* satisfy condition 1 */
        if b2<a3 then output abc2;            /* satisfy condition 2 */
        if b1<a2 and b2<a3 then output abc3;  /* satisfy condition 1 and 2 */
run;
二维码

扫码加我 拉你入群

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

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

2013-4-20 23:16:11
谢谢!这个思路不错,但是不是我想要的。我这里举例是3个数据集,但实际用的时候可能会有3百个数据集,而且每次的数据集数目还可能不一样,所以使用你这个思路的时候: data abc1 abc2 abc3 步中if条件枚举就很难了。我希望有一个通用的,不需要自己这么枚举,或者可以拼凑出枚举步也可以。我想过使用INCLUDE语句,但循环语句不能分在两个文件中。
二维码

扫码加我 拉你入群

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

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

2013-4-20 23:16:35
yongyitian 发表于 2013-4-20 21:34
改了一下你的变量名 如下
data a;
input a1 b1 c1;
谢谢!这个思路不错,但是不是我想要的。我这里举例是3个数据集,但实际用的时候可能会有3百个数据集,而且每次的数据集数目还可能不一样,所以使用你这个思路的时候: data abc1 abc2 abc3 步中if条件枚举就很难了。我希望有一个通用的,不需要自己这么枚举,或者可以拼凑出枚举步也可以。我想过使用INCLUDE语句,但循环语句不能分在两个文件中。
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群