楼主: crazygoing
9587 10

分享——多选题变二分类变量SAS源程序(原创) [推广有奖]

  • 0关注
  • 47粉丝

教授

29%

还不是VIP/贵宾

-

威望
1
论坛币
4821 个
通用积分
21.8270
学术水平
165 点
热心指数
203 点
信用等级
146 点
经验
48691 点
帖子
441
精华
1
在线时间
1325 小时
注册时间
2007-11-9
最后登录
2024-4-11

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
sas是个很强大的软件,我从接触到现在有4年时间了,期间间断的在学习中用到,本人不是专业统计人士,只是需要的时候用到,临时研究研究,所以本人水平一直不稳定 。好,闲话不多说了,回归正题。
在科研资料处理中我经常会遇到问卷中多选题的问题,如下面这个数据集:
data a;
input id x ;
cards;
1 123
2 234
3 134
4 14
5 24
6 45
7 12
8 135
9 1
;
run;

变量X是问卷中的多选题,有5个选项,录入时图方便,选择ABC,就录入成123……,现在想对其进行处理,就必需将其二分类化,最早的时候我是这样做的:

data a_new;
set a;
x1=index(x,'1');                                 /*INDEX(s,s1) 查找s1在s中出现的位置。找不到时返回0。*/
x2=index(x,'2');                                 /*引号不可少*/
x3=index(x,'3');
x4=index(x,'4');
x5=index(x,'5');
run;
data a_new1;
set a_new;
if x1^=0 then x1=1;
if x2^=0 then x2=1;
if x3^=0 then x3=1;
if x4^=0 then x4=1;
if x5^=0 then x5=1;
run;

后来随着我sas水平的提高,将程序进行了精简:
data a_new;
set a;
if index(x,'1')^=0 then x1=1; else x1=0;
if index(x,'2')^=0 then x2=1; else x2=0;
if index(x,'3')^=0 then x3=1; else x3=0;
if index(x,'4')^=0 then x4=1; else x4=0;
if index(x,'5')^=0 then x5=1; else x5=0;
run;

再后来,我接触了sas的宏编程技术,就有了把处理过程编程一个宏程序的想法,这样可以改个参数,直接调用即可,现将程序分享如下:
%let data=a;                          /*数据集名称*/
%let v=x;                               /*变量名*/
%let m=5;                             /*多选项数*/
%macro dx;
data &data._new;
set &data;
%do i=1 %to &m;
if index(&v,"&i")^=0 then &v&i=1;else &v&i=0;         /*一定要用双引号*/
%end;
run;
%mend;
%dx;
上面这段程序,只要改变“%let” 部分三个参数,全选运行就可以达到分变量的效果。

最后,将上述sas程序提供给大家下载,欢迎sas高手们指教,看能不能有更好的方法,或者再精简程序。
二维码

扫码加我 拉你入群

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

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

关键词:二分类变量 分类变量 源程序 二分类 多选题 源程序 软件 统计 专业 资料

多选题变二分类.rar

580 Bytes

本附件包括:

  • 多选题变二分类.sas

已有 2 人评分经验 热心指数 收起 理由
爱萌 + 100 很不错
crackman + 100 + 2 精彩帖子

总评分: 经验 + 200  热心指数 + 2   查看全部评分

沙发
crazygoing 发表于 2010-4-6 16:06:56 |只看作者 |坛友微信交流群
宏程序运行后会生成a_new这个新的数据文件,如果大家不想生成新的,那只要把程序部分
data &data._new 改成 data &data 即可

使用道具

藤椅
crazygoing 发表于 2010-4-9 18:25:45 |只看作者 |坛友微信交流群
没人顶?看来还是我的水平不行啊

使用道具

板凳
wxc0429 发表于 2011-1-23 13:40:38 |只看作者 |坛友微信交流群
3# crazygoing
不错,我顶一下!
所谓模型,就是用统计语言简化了的现实世界;越贴近实际情况,效果越佳。

使用道具

报纸
tigercip 发表于 2011-2-28 16:34:34 |只看作者 |坛友微信交流群
比我高,我学习。

使用道具

地板
yxyg2007 发表于 2014-4-16 23:09:33 |只看作者 |坛友微信交流群
学习了。

使用道具

7
pingguzh 发表于 2014-8-18 15:01:51 |只看作者 |坛友微信交流群
比我高多了,学习学习

使用道具

8
wh7064rg 发表于 2014-9-10 20:57:10 |只看作者 |坛友微信交流群
谢谢分享

使用道具

9
煮酒半杯 发表于 2015-1-22 09:20:05 |只看作者 |坛友微信交流群
下载下来,看看

使用道具

10
凡心明媚 发表于 2016-5-30 11:39:41 |只看作者 |坛友微信交流群
谢谢楼主,不吝分享,向你学习啦

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-19 23:34