SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 750|回复: 5
打印 上一主题 下一主题

求助:如何将多项选择的值重新赋值给多个变量

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2009-3-3 10:42:05 | 只看该作者

求助:如何将多项选择的值重新赋值给多个变量

由于建库方面的失误,将多项选择题只建了一个变量,分析时发现很不方便。例如:有一个变量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
.....
请教各位高手,不胜感激。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2009-3-3 17:16:42 | 只看该作者

Re: 求助:如何将多项选择的值重新赋值给多个变量

用一下index函数?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2009-3-3 18:08:06 | 只看该作者

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

几经实验,终于成功了,不过花了我不少时间和脑细胞哦
楼主如欲得代码,联系我
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2009-3-3 18:15:07 | 只看该作者

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]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2009-3-3 20:40:23 | 只看该作者

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;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2009-3-3 21:47:30 | 只看该作者

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]
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-5 10:30 , Processed in 0.082679 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表