SAS中文论坛
标题:
求助:如何将多项选择的值重新赋值给多个变量
[打印本页]
作者:
shiyiming
时间:
2009-3-3 10:42
标题:
求助:如何将多项选择的值重新赋值给多个变量
由于建库方面的失误,将多项选择题只建了一个变量,分析时发现很不方便。例如:有一个变量n(是一个多项选择题),用epidata输入时,n=12357就代表选择了1,2,3,5,7这些选项,现在想将n分解成n1-n7,若某些选项被选择,则n(i)=1 ,否则n(i)=0,如上例:n1=1 n2=1 n3=1 n4=0 n5=1 n6=0 n7=1。n为数值型变量。
实际工作中,涉及3000多份问卷。
cards;
6
125
.
12457
.....
请教各位高手,不胜感激。
作者:
shiyiming
时间:
2009-3-3 17:16
标题:
Re: 求助:如何将多项选择的值重新赋值给多个变量
用一下index函数?
作者:
shiyiming
时间:
2009-3-3 18:08
标题:
Re: 求助:如何将多项选择的值重新赋值给多个变量
The SAS System 16:37 Wednesday, March 3, 2009 7
Obs n m1 m2 m3 m4 m5 m6 m7
1 123 1 1 1 0 0 0 0
2 1567 1 0 0 0 1 1 1
3 1457 1 0 0 1 1 0 1
4 2345 0 1 1 1 1 0 0
5 3567 0 0 1 0 1 1 1
6 123456 1 1 1 1 1 1 0
7 17 1 0 0 0 0 0 1
几经实验,终于成功了,不过花了我不少时间和脑细胞哦
楼主如欲得代码,联系我
作者:
shiyiming
时间:
2009-3-3 18:15
标题:
Re: 求助:如何将多项选择的值重新赋值给多个变量
以楼主给出的例子所得实验结果如下:
[code:1e5wn5kf]
The SAS System 18:11 Wednesday, March 3, 2009 1
Obs n m1 m2 m3 m4 m5 m6 m7
1 125 1 1 0 0 1 0 0
2 . 0 0 0 0 0 0 0
3 12457 1 1 0 1 1 0 1
[/code:1e5wn5kf]
作者:
shiyiming
时间:
2009-3-3 20:40
标题:
Re: 求助:如何将多项选择的值重新赋值给多个变量
谢谢楼上的zhaoy,用index确实可以解决,也顺便谢谢lovesas的辛苦
data sasstudy.hiv1(drop=i nset sasstudy.hiv1;
n=put(n25talkto,best12.);
array a a1-a8;
if n ne . then do;
a1=index(n,'1');
a2=index(n,'2');
a3=index(n,'3');
a4=index(n,'4');
a5=index(n,'5');
a6=index(n,'6');
a7=index(n,'7');
a8=index(n,'8');
do i=1 to 8;
if a(i)^=0 then a(i)=1;
else a(i)=0;
end;
end;
run;
作者:
shiyiming
时间:
2009-3-3 21:47
标题:
Re: 求助:如何将多项选择的值重新赋值给多个变量
给你一个简单的
[code:2cx1vig8]data a;
input n;
nn=put(n,7.);
array m(7) m1-m7;
do i='1','2','3','4','5','6','7';
if findc(nn,i)^=0 then m(i)=1;
else m(i)=0;
end;
drop i nn;
cards;
125
.
12357
;
[/code:2cx1vig8]
欢迎光临 SAS中文论坛 (https://mysas.net/forum/)
Powered by Discuz! X3.2