楼主: crackman
1363 1

[原创博文] 跟crackman读SAS程序(94)–动态处理需要设置条件的数据列项 [推广有奖]

已卖:401份资源

院士

83%

还不是VIP/贵宾

-

威望
6
论坛币
91928 个
通用积分
23.5045
学术水平
424 点
热心指数
505 点
信用等级
256 点
经验
112978 点
帖子
2940
精华
0
在线时间
2532 小时
注册时间
2007-4-26
最后登录
2025-6-25

初级热心勋章 中级热心勋章 初级学术勋章 初级信用勋章

楼主
crackman 发表于 2010-11-24 10:08:53 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币


更多原创文章请看:http://crackman.net/


有一系列类似q0001_01,q0001_02…..q0001_10 的变量,如何根据一个变量q003的值来确定前面要处理的变量呢?
比如 q003=2 我只要处理q0001_01和q0001_02,q003=3 处理q0001_01 q0001_02 q0001_03。

如 q0001_01 和 q0001_02 都取 1 和 2 生成一个变量a=1 q0001_01 和 q0001_02 都取 3 a=2


data crackman;
input q0001_01 q0001_02 q0001_03 q0001_04 q003;
array p q0001_01-q0001_04 q003;
    if q003=1 then do;
    if p(1)=1 or p(1)=2 then a=1;
    else if p(1)=3 then a=2;
else a=3;
end;
    else do j=1 to q003-1;
     k=j+1;
      if p(j)=p(k)=1 or p(j)=p(k)=2 then do ;
        a=1;
        k+1;
        end;
        else if p(j)=p(k)=3 then do ;
         a=2;
         k+1;
         end;
    else if p(j) ne p(k) then do;
         a=3;
    end;
end;
drop k j;
datalines;
1 1 1 1 1
1 1 2 1 3
3 3 1 2 2
2 2 2 2 4
1 1 1 1 4
;
run;
proc print data=crackman;
run;

HOPEWELL:
data crackman;   
input q0001_01 q0001_02 q0001_03 q0001_04 q003;  
array p{*} q0001_01-q0001_04;
select(substr(cats(of p{*}),1,q003));      
when(repeat(’1′,q003-1)) a=1;      
when(repeat(’2′,q003-1)) a=1;      
when(repeat(’3′,q003-1)) a=2;      
otherwise a=3;   
end;
datalines;
1 1 1 1 1
1 1 2 1 3
3 3 1 2 2
2 2 2 2 4
1 1 1 1 4
;
proc print data=crackman;
run;

二维码

扫码加我 拉你入群

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

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

关键词:crackman Ackman sas程序 CRACK Man SAS crackman

沙发
leedx 发表于 2010-11-24 18:45:03
学习SAS不错的程序~

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-6 21:33