作者west1996 ()
看板Statistics
标题Re: [程式] SAS 加总计算问题
时间Tue Mar 20 13:19:51 2012
※ 引述《summerslam (BB)》之铭言:
: [软体程式类别]:
: SAS
: [程式问题]:
: 计算加总问题
: [软体熟悉度]:
: 低(1~3个月)
: [问题叙述]:
: 各位前辈好,在处理资料时,遇到需要计算某个变数内各种类别的次数,想请教一下
: 是否有方法可以处理,谢谢
: 资料:
: ID date X1 X2
: 1 0101 N G
: 1 0101 N L
: 1 0101 G N
: 1 0102 G N
: 1 0102 L L
: 2 0101 G N
: 2 0101 G G
: 2 0103 L N
: 希望的结果:
: ID DATE X1_N X1_G X1_L X2_N X2_G X2_L
: 1 0101 2 1 0 1 1 1
: 1 0102 0 1 1 1 0 1
: 2 0101 0 2 0 1 1 0
: 2 0103 0 0 1 1 0 0
: 想知道每个ID 每天的 X1变数及X2变数的 N,G,L各有几个,有爬文过,但
: 好像都是变数内为数值做加总,如果变数内是文字,不知道有没有方法
: 可以产生一个新的资料是计算出现的次数(因为id有上百万个),请高手指点一下,谢谢!!
proc sort data old out=new;
by id date;
run;
data final;
set new;
retain x1_n x1_g x1_l x2_n x2_g x2_l;
by id date;
if first.date then do;
x1_n=0; x1_g=0; x1_l=0;
x2_n=0; x2_g=0; x2_l=0;
end;
if x1='N' then x1_n+1;
else if x1='G' then x1_g+1;
else if x1='L' then x1_l+1;
if x2='N' then x2_n+1;
else if x2='G' then x2_g+1;
else if x2='L' then x2_l+1;
if last.date then output;
drop x1 x2;
run;
final档应该就是你要的了!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.117.131
1F:→ summerslam:w大谢谢,我试看看! 03/20 14:36