楼主: daazx
7106 3

[原创博文] 想在表中插入一列 [推广有奖]

  • 0关注
  • 53粉丝

VIP

已卖:2份资源

教授

2%

还不是VIP/贵宾

-

TA的文库  其他...

Hadoop与大数据

威望
0
论坛币
50036 个
通用积分
7.1383
学术水平
176 点
热心指数
197 点
信用等级
114 点
经验
11000 点
帖子
445
精华
3
在线时间
1069 小时
注册时间
2007-10-19
最后登录
2021-6-1
毕业学校
深圳大学

楼主
daazx 在职认证  发表于 2012-5-10 18:44:33 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
未命名.jpg

想在表中插入一列,如图“识别”,对家庭进行识别:
如果一个家庭的成员特征,只存在1、3两种类型,那么这个家庭的所有人的识别特征都为:A,比如家庭2;
如果一个家庭的成员特征,只存在1、3、5三种类型,那么这个家庭所有人的特征都识别为:B,比如家庭3
其他不论什么组合,都识别为C,比如家庭1。

请教高手,该怎么在SAS中实现,在下叩谢!
二维码

扫码加我 拉你入群

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

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

关键词:请教高手 所有人 单鞋

沙发
chendonghui1987 发表于 2012-5-11 00:07:47
我大致写了一个程序,你看看对不对,希望对你有帮助。
data work.a;
        input jia $ id $ tezheng;
        datalines;
1 1 0
1 2 1
1 3 -1
2 1 1
2 2 3
2 3 3
3 1 1
3 2 3
3 3 5
3 4 1
;
run;

proc sort data = work.a out = work.b;
        by jia tezheng;
run;

data work.c(keep = jia shibie);
        set work.b;
        if tezheng <= 0 then do;
                shibie = 'c';
        end;else if tezheng = 1 or tezheng = 3 then do;
                shibie = 'a';
        end;else if tezheng = 5 then do;
                shibie = 'b';
        end;else do;
                shibie = 'c';
        end;
run;

proc sort data = work.c;
        by jia shibie;
run;

data work.c;
        set work.c;
        by jia shibie;
        if last.jia;
run;

proc sql noprint;
        create table work.d as
                select a.jia,
                        a.id,
                        a.tezheng,
                        b.shibie
                from work.a as a ,work.c as b
                where a.jia = b.jia;
quit;

藤椅
daazx 在职认证  发表于 2012-6-5 23:03:45
chendonghui1987 发表于 2012-5-11 00:07
我大致写了一个程序,你看看对不对,希望对你有帮助。
data work.a;
        input jia $ id $ tezheng;
非常感谢!我试试看哈

板凳
tj0412ymy 发表于 2012-6-6 22:44:54
沙发的程序是错误的。可以多用几个ID测试一下。Try this code:
  1. data test;
  2.         input Fam_ID $ Per_id $ value;
  3.         datalines;
  4. 1 1 0
  5. 1 2 1
  6. 1 3 -1
  7. 2 1 1
  8. 2 2 3
  9. 2 3 3
  10. 3 1 1
  11. 3 2 3
  12. 3 3 5
  13. 3 4 1
  14. 4 1 1
  15. 4 2 5
  16. ;
  17. proc sql;
  18. create table test1 as
  19. select Fam_ID,value,diff,count(value) as cou, sum(diff) as sum
  20. from (select distinct Fam_ID,value,value-3 as diff from test where value in (1,3,5))
  21. group by Fam_ID
  22. ;
  23. quit;
  24. data test2;
  25. set test1;
  26. if cou=3 then flag='C';
  27. else if cou=2 and sum=-2 then flag='B';
  28. else delete;
  29. run;
  30. proc sql;
  31. create table final as
  32. select distinct a.*, case when(a.Fam_ID=b.Fam_ID) then b.flag else 'A' end as flag
  33. from test as a
  34. left join test2 as b
  35. on a.Fam_ID=b.Fam_ID
  36. ;
  37. quit;
  38. proc print noobs;run;
复制代码
对SAS和统计方面感兴趣的朋友,请加SAS学习和认证讨论群:169157207。欢迎在群上讨论!

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-2 00:49