全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1634 4
2012-02-24
现在有这么一个数据集:data test;
input name $1. a 1. b 1. c 1.;
cards;
x 1 0 1
y 0 1 1
z 0 1 0
;
run;

现在我想实现根据a/b/c 的值为1 就添加变量名到一个新变量中
例如:
x ‘ac’
y 'bc'
z 'b'

通过data step 应该很容易实现,
我想能不能通过proc sql实现呢?在Oracle里面,可以通过(Decode(a,1,'a','')||Decode(b,1,'b', '')||Deocde(c,1,'c',''))来实现
那么在SAS下面应该怎么做呢?
二维码

扫码加我 拉你入群

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

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

全部回复
2012-2-24 22:50:19
U can use SQL procedure in this way.


复制代码

二维码

扫码加我 拉你入群

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

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

2012-2-26 23:18:37
You can leverage SAS format and make it a little easy.

data tmp;
input name : $1. a : 1. b : 1. c : 1.;
cards;
x 1 0 1
y 0 1 1
z 0 1 0
;
run;

proc print;run;

proc format;
value a
1='a'
other=' ';
;
value b
1='b'
other=' ';
;
value c
1='c'
other=' ';
;
run;

proc sql;
  select *, catt(put(a,a.),put(b,b.),put(c,c.)) as newvar
  from tmp
  ;
  quit;
二维码

扫码加我 拉你入群

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

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

2012-2-27 13:50:39
多谢楼上两位的精彩回复!!都是很实用的方法,学习了!!!
二维码

扫码加我 拉你入群

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

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

2012-3-3 20:39:00
顶楼主,我也需要
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群