全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
5824 34
2010-03-11
悬赏 100 个论坛币 未解决
假设数据集中有变量两个,分别为数值型的x和字符型的class。假设有如下5个观测:
x     class
1      A
5      B
4      A
2      B
8      A
在这个数据集中,变量class有两个取值,分别为A、B,如果现在考察对变量class进行重新排序,根据概率论知识:这里有5条观测,分成两类,一类(A类)有3个,第二类(B类)有2个,则可以重新组合的结果为10种,例如下面的结果就是其中的两种:
x         class                x           class
1            A                   5              B
4            A                   2              B
8            A                   8              A
5            B                  1               A
2            B                  4               A
现在的问题是:如何根据原始的数据集,编写SAS程序生成所有的10种结果。
如果现在不只是A、B两类,比如3类,类似的程序又如何编写呢?请高手给予解决。
二维码

扫码加我 拉你入群

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

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

全部回复
2010-3-11 15:49:52
我的理解是10=5!/(3!*2!)

即只与A、B的顺序有关,和x的排列没关系,即A间无差别

LZ是不是这个意思
二维码

扫码加我 拉你入群

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

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

2010-3-11 15:54:03
这里不考虑x的影响,当然x随着class的变动而同步变动,你的理解公式完全正确,请给出这个程序,好象你以前就帮我解决个问题,希望你这次还能帮帮我,谢谢!
二维码

扫码加我 拉你入群

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

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

2010-3-11 16:44:52
data a;
input x class $@;
cards;
1      A
5      B
4      A
2      B
8      A
;
run;
proc sort;
by class x;
run;
proc append base=a data=a;
run;
data b;
set a;
class1=lag1(class);
class2=lag2(class);
class3=lag3(class);
class4=lag4(class);
class5=lag5(class);
xn=class;
x1=lag1(x);
x2=lag2(x);
x3=lag3(x);
x4=lag4(x);
x5=lag5(x);
run;
data c(drop=class5 xn x5);
set b;
where class5 ^=' ' and x5^=.;
run;
proc print;
run;

结果出来了,但是组合成数据集,还要努力,时间有限,期待下面的人写完
二维码

扫码加我 拉你入群

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

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

2010-3-11 16:45:58
最好能写成一个宏文件出来
抛砖引玉。。。。
二维码

扫码加我 拉你入群

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

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

2010-3-11 16:52:56
貌似不对吧......
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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