楼主: 小鳄鱼a
771 11

数据集拆分 [推广有奖]

  • 6关注
  • 10粉丝

学科带头人

3%

还不是VIP/贵宾

-

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

100论坛币
针对id   怎样才能够取出不同id的两两所有可能组合,并根据x 进行合并,并生成两个变量,第一个变量是两个数据集观测的加总,第二个是合并数据集的观测数目。
比如下面根据 id 可以形成6个两两组合
来看id1和id2组合,根据x横向合并之后有数据集有4个观测,而合并之前两个数据集有7个观测。这就是生成的两个变量。

最后,把这些横向合并数据集再纵向合并在一起


idx

1

2

1

1

1

3

2

2

2

1

2

4

2

3

3

2

3

5

3

1

3

3

4

2

4

1

4

3

4

4

4

6


最佳答案

jl60156 查看完整内容

data test1; set have(rename=(x=x_ id=id_)); do i=1 to nobs; set have point=i nobs=nobs; if id_ ne id then do; if x = x_ then do; newid=cats(put(min(id_,id),best.),',',put(max(id_,id),best.)); flg=1; output; end; else if x ne x_ then do; ...
关键词:数据集 合并数据 在一起 行合并 X12
沙发
jl60156 发表于 2015-5-9 20:06:05 |只看作者 |坛友微信交流群
data test1;
     set have(rename=(x=x_ id=id_));
     do i=1 to nobs;
           set have point=i nobs=nobs;
          if id_ ne id then do;
                if x = x_ then do;
                     newid=cats(put(min(id_,id),best.),',',put(max(id_,id),best.));
                     flg=1;
                     output;
                end;
                else if x ne x_ then do;
                     newid=cats(put(min(id_,id),best.),',',put(max(id_,id),best.));
                     flg=2;
                output;
                end;
           end;
     end;
run;
proc sort data=test1 out=test2(keep=newid x_  flg);
     by newid x_  flg;
run;
data test3;
     set test2;
     by newid x_  flg;
     if first.x_;
run;
proc sql;
     create table want as
           select  tranwrd(newid,',',ifc(flg=1,'and','not',' ')) as id, x_ as x, case
                                when flg=1 then cats(put(sum(flg=1),best.),'/',put(count(newid),best.))
                                when flg=2 then cats(put(sum(flg=2),best.),'/',put(count(newid),best.))
                                end as over
           from test3
           group by newid
                order by newid, x_;
quit;
已有 1 人评分论坛币 收起 理由
admin_kefu + 30 热心帮助其他会员

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

使用道具

藤椅
sniperhgy 发表于 2015-5-13 14:49:55 |只看作者 |坛友微信交流群
有点不明白楼主的意思。
“先要对ID做一个组合1 ~ 4做出6种组合” : 这个条件就是说(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)也就是自己和自己不能组合。
“来看id1和id2组合,根据x横向合并之后有数据集有4个观测,而合并之前两个数据集有7个观测。这就是生成的两个变量” 这句话是什么意思?实在搞不清楚楼主的需求。
已有 1 人评分论坛币 收起 理由
admin_kefu + 15 热心帮助其他会员

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

使用道具

板凳
小鳄鱼a 发表于 2015-5-13 15:23:16 |只看作者 |坛友微信交流群
关于id1和id2形成的数据集   可以是这样

id        x        over
1and2        1        0.75
1and2        2        0.75
1and2        3        0.75
2not1        4        0.75

使用道具

报纸
小鳄鱼a 发表于 2015-5-13 15:25:01 |只看作者 |坛友微信交流群
sniperhgy 发表于 2015-5-13 14:49
有点不明白楼主的意思。
“先要对ID做一个组合1 ~ 4做出6种组合” : 这个条件就是说(1,2),(1,3),(1,4),(2 ...
关于id1和id2形成的数据集   可以是这样

id        x        over
1and2        1        0.75
1and2        2        0.75
1and2        3        0.75
2not1        4        0.75

使用道具

地板
sniperhgy 发表于 2015-5-13 22:29:35 |只看作者 |坛友微信交流群
小鳄鱼a 发表于 2015-5-13 15:25
关于id1和id2形成的数据集   可以是这样

id        x        over
真不好意思,我的理解力太差劲了……,即使楼主写了补充说明,我还是没看懂……

使用道具

7
小鳄鱼a 发表于 2015-5-16 21:38:52 |只看作者 |坛友微信交流群
sniperhgy 发表于 2015-5-13 22:29
真不好意思,我的理解力太差劲了……,即使楼主写了补充说明,我还是没看懂……
大神们   大概输出是这样的


id        x
1and2        1
1and2        2
1and2        3
2not1        4
1and3        1
1and3        2
1and3        3
3not1        5
1and4        1
1and4        2
1and4        3
4not1        4
4not1        6
2and3        1
2and3        2
2and3        3
2not3        4
3not2        5
2and4        1
2and4        2
2and4        3
2and4        4
4not2        6
3and4        1
3and4        2
3and4        3
3not4        5
4not3        4
4not3        6

使用道具

8
小鳄鱼a 发表于 2015-5-16 21:41:12 |只看作者 |坛友微信交流群
2not3代表   2持有  3 不持有   。  
在1和2的组合中,一共持有4个不同的x,1和2都持有的有三个,所以重合率为0.75

使用道具

9
小鳄鱼a 发表于 2015-5-17 15:47:31 |只看作者 |坛友微信交流群
坐等大神啊

使用道具

10
小鳄鱼a 发表于 2015-5-19 15:50:43 |只看作者 |坛友微信交流群
jl60156 发表于 2015-5-9 20:06
data test1;
     set have(rename=(x=x_ id=id_));
     do i=1 to nobs;
请再看看这个类似的好吗,非常感谢


https://bbs.pinggu.org/thread-3704235-1-1.html

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-26 17:00