Re: [程式] SAS對不同列進行欄位分析該怎麼做?

看板Statistics作者 (★閃亮數學推理★)時間10年前 (2014/01/18 18:39), 編輯推噓1(103)
留言4則, 1人參與, 最新討論串1/2 (看更多)
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)

01/18 21:36, , 1F
噢噢感謝ckaha大大! 只是我還有個小疑問,倘若我想定義如
01/18 21:36, 1F

01/18 21:38, , 2F
有A及B的人為group=1 有A及C的人為group=2 有B及C的人則為
01/18 21:38, 2F

01/18 21:39, , 3F
group=3 也就是說其group是有意義的,而後面的其他筆紀錄
01/18 21:39, 3F

01/18 21:40, , 4F
也希望可以繼續按照此組合來定義group,大致如此,很謝謝您!
01/18 21:40, 4F
文章代碼(AID): #1IsbdrZz (Statistics)
文章代碼(AID): #1IsbdrZz (Statistics)