作者socery (keep going!)
看板Statistics
标题Re: [程式] sas增加观察值的方式?
时间Sun May 30 21:50:52 2010
※ 引述《piggood (成为有品味的男人)》之铭言:
: ------------------------------------------------------------------------
: [软体程式类别]:
: sas
: [程式问题]:
: 资料处理
: [软体熟悉度]:
: 高(1年以上)
: [问题叙述]:
: 各位前辈好
: 我现在有一个资料档如下
: id number
: A 1
: A 2
: A 4
: A 7
: B 3
: B 5
: . .
: . .
: . .
: 我想要把NUMBER间断的部份补齐如下
: 补到该ID组别的现有最大值
: e.g. A要补到1~7之间的值,B要补1~5的值
: 并用一个变项,分办哪一笔观察值是新增的值,如new
: id number NEW
: A 1 0
: A 2 0
: A 3 1
: A 4 0
: A 5 1
: A 6 1
: A 7 0
: B 1 1
: B 2 1
: B 3 0
: B 4 1
: B 5 0
: . .
: . .
: 好像不用sql,不能解决
: 但我不会sql………
: 请教一下各位有什麽办法解决吗?
: 本身程度不足,想了很久
: 先谢谢各位的帮忙了
: -----------------------------------------------------------------------------
提供个笨方式
proc sort data=a;by id number;run;
data a1;set a;by id number;if last.id then c=number;run;
data a2;set a1;by id number;if last.number and c^=' ' then do d=1 to c;
output;end;keep id d;proc sort;by id d;run;
data a3;set a1;keep id number c;rename number=d;c=1;proc sort;by id d;run;
data a4;merge a2 a3;by id d;if c=' ' then c=0;run;
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.117.0.138
1F:推 kenshin528:by id number;if last.id;do d=1 to number;output;end 05/31 19:04
2F:→ kenshin528:中间那边直接抓LAST.ID 就可以罗~ 05/31 19:04
3F:→ socery:朴,对 没检查 哈哈... 05/31 20:34