作者ckaha (★闪亮数学推理★)
站内Statistics
标题Re: [问题] SAS对不同列进行栏位分析该怎麽做?
时间Sat Jan 18 18:39:43 2014
proc sql;
create table A as select
*
from [YOUR DATASET NAME]
group by cd01,cd02,cd03
having sum(sum(A,B,C,D)) = 2
;
create table B as select distinct
cd01,cd02,cd03
from A
;
quit;
data C;
set B;
group = _n_;
run;
proc sql;
create table OUTPUT_TABLE as select
A.*,
C.group
from A
left join C on (A.cd01=C.cd01 and A.cd02 = C.cd02 and A.cd03 = C.cd03)
;
quit;
※ 引述《sti1nox (我爱台湾爱我)》之铭言:
: 小妹刚接触SAS,有些地方不太清楚,烦请前辈指教! 感谢!
: 资料大致如下
: cd01 cd02 cd03 A B C D
: 1 2 3 1 0 0 0
: 1 2 3 0 1 0 0
: 5 6 7 0 1 0 0
: 8 9 10 1 0 0 0
: 8 9 10 0 0 1 0
: 8 9 10 0 0 0 1
: 11 12 13 1 0 0 0
: 11 12 13 0 0 0 1
: 栏位cd01-03代表此人的辨识资料(似ID),
: 如cd01=1 cd02=2 cd03=3的资料是为同一笔人的资料,
: 故上述资料有三个人的资料,
: 而栏位A,B,C,D中的1,0则代表A,B,C,D的有无
: 目前是想要对於同样的cd01-cd03时,
: 定义几个group,如有A跟B,但却没有C跟D时,group=1。
: 又或者是有A跟D,但却没有B跟C时,则group=2,
: 而都没有定义的话,group栏位会等於空白,
: 故应该会变成下列资料
: cd01 cd02 cd03 A B C D group
: 1 2 3 1 0 0 0 1
: 1 2 3 0 1 0 0 1
: 5 6 7 0 1 0 0 _
: 8 9 10 1 0 0 0 _
: 8 9 10 0 0 1 0 _
: 8 9 10 0 0 0 1 _
: 11 12 13 1 0 0 0 2
: 11 12 13 0 0 0 1 2
: 大致如此,因为我想要找到在同样的cd01-cd03时,
: A,B,C,D四个栏位里,只有其中两个栏位有1的人,其余两个栏位须为0,
: 符合此条件的我才会定义group,
: 其余未定义的group须为空白
: 大致如此,希望前辈们看得懂 > <"
: 搞了一个早上,实在无法了QQ
: 就麻烦大家了,谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.163.167.227
※ 编辑: ckaha 来自: 1.163.167.227 (01/18 18:44)
1F:推 sti1nox:噢噢感谢ckaha大大! 只是我还有个小疑问,倘若我想定义如 01/18 21:36
2F:→ sti1nox:有A及B的人为group=1 有A及C的人为group=2 有B及C的人则为 01/18 21:38
3F:→ sti1nox:group=3 也就是说其group是有意义的,而後面的其他笔纪录 01/18 21:39
4F:→ sti1nox:也希望可以继续按照此组合来定义group,大致如此,很谢谢您! 01/18 21:40