Re: [程式] SAS對不同列進行欄位分析該怎麼做?
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
01/18 21:36, 1F
→
01/18 21:38, , 2F
01/18 21:38, 2F
→
01/18 21:39, , 3F
01/18 21:39, 3F
→
01/18 21:40, , 4F
01/18 21:40, 4F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):