作者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