楼主: edragon1983
1661 3

[有偿编程] SAS CODE求助 [推广有奖]

  • 0关注
  • 0粉丝

已卖:1655份资源

讲师

18%

还不是VIP/贵宾

-

威望
0
论坛币
5118 个
通用积分
7.3189
学术水平
0 点
热心指数
3 点
信用等级
0 点
经验
7801 点
帖子
217
精华
0
在线时间
432 小时
注册时间
2007-8-29
最后登录
2025-7-25

楼主
edragon1983 发表于 2011-7-13 22:47:35 |AI写论文
50论坛币
目前遇到一个问题,想不到办法解决,请教高手指点。原始数据量比较大(几万条记录),我举一个简单例子
ID        A        B
1001        a1        b1
1001        a1        b2
1001        a1        b1
1001        a1        b2
1002        a1        b1
1003        a1        b3
1004        a2        b3
1004        a2        b4
1004        a3        b3
1004        a3        b4


对于这样的数据,ID为交易记录号,本例中为4条。现在想得到如下数据,以a1,b1组合为例:x1为4条记录中含有a1,b1的组合数(2条),x2为4条记录中含有a1,但是不含有b1的组合数(1条),x3为4条记录中含有b1,但是不含有a1的组合数(0条),x2为4条记录中不含有a1且不含有b1的组合数(1条),x1+x2+x3+x4总和为4。拓展至其他组合,结果如下:

ID        A        B        x1        x2        x3        x4        N
1001        a1        b1        2        1        0        1        4
1001        a1        b2        1        1        0        2        4
1001        a1        b1        2        1        0        1        4
1001        a1        b2        1        1        0        2        4
1002        a1        b1        2        1        0        1        4
1003        a1        b3        1        2        1        0        4
1004        a2        b3        1        1        1        1        4
1004        a2        b4        1        1        0        2        4
1004        a3        b3        1        0        1        2        4
1004        a3        b4        1        0        0        3        4

以上只是一个简单举例  实际数据A与B均为中文,并无规律性可言(并非按a,b字母开头)

请教如何实现以上预期结果?SQL语句是否可行?想了半天没有想出来,盼指教!

最佳答案

ntsean 查看完整内容

data test; input ID $ A $ B $; datalines; 1001 a1 b1 1001 a1 b2 1001 a1 b1 1001 a1 b2 1002 a1 b1 1003 a1 b3 1004 a2 b3 1004 a2 b4 1004 a3 b3 1004 a3 b4 ; run; proc sql; select a.*, (select sum(mA*mB) from (select id as mid, max ...
关键词:code COD ODE sql语句 实际数据 求助 SAS code

沙发
ntsean 发表于 2011-7-13 22:47:36
data test;
input ID $        A $        B $;
datalines;
1001        a1        b1
1001        a1        b2
1001        a1        b1
1001        a1        b2
1002        a1        b1
1003        a1        b3
1004        a2        b3
1004        a2        b4
1004        a3        b3
1004        a3        b4
;
run;

proc sql;
select a.*,
(select sum(mA*mB) from (select id as mid, max(A=a.A) as mA, max(B=a.B) as mB from test group by id)) as x1,
(select sum(mA*(1-mB)) from (select id as mid, max(A=a.A) as mA, max(B=a.B) as mB from test group by id)) as x2,
(select sum((1-mA)*mB) from (select id as mid, max(A=a.A) as mA, max(B=a.B) as mB from test group by id)) as x3,
(select sum((1-mA)*(1-mB)) from (select id as mid, max(A=a.A) as mA, max(B=a.B) as mB from test group by id)) as x4,
calculated x1+calculated x2+ calculated x3+ calculated x4 as N
from test as a
;


quit;
已有 1 人评分论坛币 热心指数 收起 理由
liuzhenzhu + 30 + 2 热心帮助其他会员

总评分: 论坛币 + 30  热心指数 + 2   查看全部评分

藤椅
soporaeternus 发表于 2011-7-14 08:46:41
是否还需要有变量来判断有a1但无b2之类的
所有分类的依据是什么?每个ID的第一条记录的a1,b1取值,还是所有水平数,即针对一个ID对于A有m个水平,B有n个水平,需要有2^m*2^n个变量来记录?
已有 1 人评分论坛币 热心指数 收起 理由
liuzhenzhu + 5 + 2 热心帮助其他会员

总评分: 论坛币 + 5  热心指数 + 2   查看全部评分

Let them be hard, but never unjust

板凳
edragon1983 发表于 2011-7-14 16:21:49
3# ntsean

谢谢!
已解决,请版主给分!

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

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