- 阅读权限
- 255
- 威望
- 0 级
- 论坛币
- 294 个
- 通用积分
- 2.0010
- 学术水平
- 13 点
- 热心指数
- 16 点
- 信用等级
- 13 点
- 经验
- 2473 点
- 帖子
- 112
- 精华
- 0
- 在线时间
- 330 小时
- 注册时间
- 2015-12-18
- 最后登录
- 2020-8-29
博士生
还不是VIP/贵宾
- 威望
- 0 级
- 论坛币
- 294 个
- 通用积分
- 2.0010
- 学术水平
- 13 点
- 热心指数
- 16 点
- 信用等级
- 13 点
- 经验
- 2473 点
- 帖子
- 112
- 精华
- 0
- 在线时间
- 330 小时
- 注册时间
- 2015-12-18
- 最后登录
- 2020-8-29
| 开心 2017-1-12 09:15:37 |
---|
签到天数: 1 天 连续签到: 1 天 [LV.1]初来乍到
|
经管之家送您一份
应届毕业生专属福利!
求职就业群
感谢您参与论坛问题回答
经管之家送您两个论坛币!
+2 论坛币
- /*请教sas程序,假设有下列数据,这是双向关系数据表,
- 本应该是n*n的数据模式,但因为数据问题,导致列变量缺少,
- 现在想做的是把他变成N*n的形式,也就是添加a1,a5,a6,a8,a9,a12,a13列,
- 数值可以直接设为0。这个数据表我列的比较简单,真实的数据是行有200+,
- 列有100+,所以手工添加列变化过于复杂,恳请各位指教,谢谢!*/
- /*解决实际问题之填补缺失的列变量*/
- data nm;
- input name $ a2 a3 a4$ a7;
- cards;
- a1 . 0 c 0
- a2 . 0.23 c 0
- a3 c 0 c 0
- a4 . 0 c 0
- a5 . 0 c 0
- a6 . 0 c 1
- a7 . 0 c 1
- ;
- /*取列变量name所有的值*/
- proc sql noprint;
- select name into :rowname separated by ' '
- from nm;
- quit;
- %put &rowname;
- /*删除列变量名name*/
- data nm1;
- set nm;
- drop name;
- run;
- /*取列变量名在行变量名(总集)的缺失变量值*/
- proc contents data=nm1 out=list;run;
- proc sql noprint;
- create table short as
- select name
- from nm
- where name not in (select name from list);
- quit;
- /*将缺失变量名赋值给宏变量*/
- proc sql noprint;
- select name into :shortname separated by ' '
- from short;
- quit;
- %put &shortname;
- /*讲新增变量(缺失变量)赋值为0*/
- data nn;
- set nm;
- retain &shortname 0;
- run;
- /*排序和观测变量名一致,即得到NxN方阵(矩阵)*/
- data nn;
- retain name &rowname;
- set nn;
- run;
复制代码
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
|
|
|