全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2399 9
2014-09-30
1. 现有dataset如下,假设已经按照id和code排好序而且去除了code的重复值(其实去不去重是不是无所谓?)
idcode

101

1

101

3

101

6

102

2

102

4

103

2

103

3

103

5

103

8



希望转换成如下格式,新dataset对于id是unique的,新建变量a1到a8,如果对于同一个id,变量code的value中出现了某个数值n,则对应an=1,否则为0.
ida1a2a3a4a5a6a7a8

101

1

0

1

0

0

1

0

0

102

0

1

0

1

0

0

0

0

103

0

1

1

0

1

0

0

1




2. 现有dataset如下,code1-code5全部是字符型变量
idcode1code2code3code4code5

101

101a235000

101

49v86000

101

6630000

102

v86237000

102

v86aaabbb00

103

c639000

103

450000

103

6660000

103

a720000


希望建立一个unique id的dataset,新建变量flag_v86,对于同一个id,如果v86在code1-code5中出现至少一次,则flag_v86=1,否则为0。
flag_v86

101

1

102

1

103

0



我想任务并不难,可能是用retain和if.first, if.last语句,但我自己写不出来。恳请大家指教,多谢!
二维码

扫码加我 拉你入群

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

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

全部回复
2014-9-30 10:04:00
第一个问题
复制代码
二维码

扫码加我 拉你入群

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

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

2014-9-30 10:17:23
crazygoing 发表于 2014-9-30 10:04
第一个问题
多谢解答!能否不用proc步,仅用data步完成?
二维码

扫码加我 拉你入群

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

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

2014-9-30 10:28:24
merge a(where=( a1=1) rename=(code=a1))
     a(where=( a2=2) rename=(code=a2))
     ... ...
     a(where=( a8=8) rename=(code=a8));  
  by id;
run;
???
我用不好transpose  一直写data步。。。

update:还得把.改成0;非.改成1...
二维码

扫码加我 拉你入群

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

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

2014-9-30 10:29:33
第二个问题
复制代码
二维码

扫码加我 拉你入群

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

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

2014-9-30 10:31:59
noyazz 发表于 2014-9-30 10:17
多谢解答!能否不用proc步,仅用data步完成?
只用data步我不会,不过根据三楼的思路,可以利用macro建立循环data步,省点代码。
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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