楼主: zwnSAS121
1063 0

[程序分享] 解决实际问题之填补缺失的列变量 [推广有奖]

  • 6关注
  • 2粉丝

博士生

19%

还不是VIP/贵宾

-

威望
0
论坛币
294 个
通用积分
2.0010
学术水平
13 点
热心指数
16 点
信用等级
13 点
经验
2473 点
帖子
112
精华
0
在线时间
330 小时
注册时间
2015-12-18
最后登录
2020-8-29

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
  1. /*请教sas程序,假设有下列数据,这是双向关系数据表,
  2. 本应该是n*n的数据模式,但因为数据问题,导致列变量缺少,
  3. 现在想做的是把他变成N*n的形式,也就是添加a1,a5,a6,a8,a9,a12,a13列,
  4. 数值可以直接设为0。这个数据表我列的比较简单,真实的数据是行有200+,
  5. 列有100+,所以手工添加列变化过于复杂,恳请各位指教,谢谢!*/

  6. /*解决实际问题之填补缺失的列变量*/
  7. data nm;
  8. input name $ a2 a3 a4$ a7;
  9. cards;
  10. a1 . 0    c    0
  11. a2 . 0.23 c    0
  12. a3 c 0    c    0
  13. a4 . 0    c    0
  14. a5 . 0    c    0
  15. a6 . 0    c    1
  16. a7 . 0    c    1
  17. ;

  18. /*取列变量name所有的值*/
  19. proc sql noprint;
  20. select name into :rowname separated by ' '
  21. from nm;
  22. quit;

  23. %put &rowname;

  24. /*删除列变量名name*/
  25. data nm1;
  26. set nm;
  27. drop name;
  28. run;

  29. /*取列变量名在行变量名(总集)的缺失变量值*/
  30. proc contents data=nm1 out=list;run;
  31. proc sql noprint;
  32. create table short as
  33. select name
  34. from nm
  35. where name not in (select name from list);
  36. quit;

  37. /*将缺失变量名赋值给宏变量*/
  38. proc sql noprint;
  39. select name into :shortname separated by ' '
  40. from short;
  41. quit;

  42. %put &shortname;

  43. /*讲新增变量(缺失变量)赋值为0*/
  44. data nn;
  45. set nm;
  46. retain &shortname 0;
  47. run;

  48. /*排序和观测变量名一致,即得到NxN方阵(矩阵)*/
  49. data nn;
  50. retain name &rowname;
  51. set nn;
  52. run;
复制代码


二维码

扫码加我 拉你入群

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

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

关键词:实际问题 proc sql separate contents Content

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

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

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

GMT+8, 2024-4-23 16:50