作者hanjing (自知者明)
站內Statistics
標題[程式] SAS分組的指令
時間Thu Apr 22 17:17:26 2010
[軟體程式類別]:
SAS
[程式問題]:
資料處理
[軟體熟悉度]:
低(1~3個月)
[問題敘述]:
我想要將某些特性的觀察值分組,但是這些特性很亂而且沒有一定的規則
舉例:
ID region co-region_1 co-region_2 co-region_3
A 101
B 102
C 103
D 104
我想要新創co-region來進行分類
基本的想法如下
[程式範例]:
data b;
set a;
select;
when ( region=101 or region=102 ) co-region_1=1;
otherwise co-region_1=0;
when ( region=101 or region=102 or region=103 ) co-region_2=1;
otherwise co-region_2=0;
when ( region=102 or region=104 ) co-region_3=1;
otherwise co-region_3=0;
end;
run;
無誤的話可以得到的結果為
ID region co-region_1 co-region_2 co-region_3
A 101 1 1 0
B 102 1 1 1
C 103 0 1 0
D 104 0 0 1
嗯...但是,我預計要分350組左右
而且每一組之間都不會有順序或其他的關連性
所以目前我想到的是土法煉鋼,就一筆一筆的key-in
但是想一想又覺得自己的做法有點笨,所以請版友提供更聰明的解決方法
感 謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.138.153.11
1F:推 kenshin528:沒有規則?? 那一筆一筆KEY應該會比較快唷 04/22 17:27
2F:→ hanjing:對..沒有規則,而且region的部份還可能有4200,7205這種四位 04/22 17:28
3F:→ hanjing:數字....真麻煩~ 04/22 17:29
4F:推 wlsherica:做苦工@@? 04/22 20:11
5F:推 kenshin528:那妳的判斷件是啥? 04/22 20:37
6F:→ hanjing:唉~說到判斷條件啊...其實就是鄰近區域的判別,例如美國的 04/22 21:46
7F:→ hanjing:鄰國是加拿大和墨西國,所以我就將他們整理在第一組 04/22 21:47
8F:→ hanjing:而加拿大的鄰國只有美國,所以這一組就是第二組..所以啊 04/22 21:47
9F:→ hanjing:你想到非洲,南美洲啊...就知道很難整理了 04/22 21:48
10F:推 tew:簡單的做法是 先做國家的coding 04/22 22:04
11F:→ hanjing:嗯coding我完成了啊...但是接下來就是要分組了,我只想到用 04/23 09:52
12F:→ hanjing:select去分組,但接下來也是面臨到做苦工啊就是要開始,when 04/23 09:54
13F:→ hanjing:(coding=101 or coding=102) co-coding=1; 有更好的方法嗎 04/23 09:56
嗯,根據TEW版友的說法
其實我已經有完成各國家coding
而且也將該國與鄰國的coding整理在一起
像是
國家 代碼 鄰近國家
美國 101 102,103
加拿大 102 101
墨西哥 103 101
而我希望分組就是要將美國,加拿大,墨西哥三個國家框在同一組
而將美國,加拿大框在另一組
以上這個表我有另外整理在excel檔裡面
但似乎對我在sas將他們分組沒有很大的幫助
我目前只能笨笨的
select;
when ( coding=101 or coding=102 or coding=103 ) co-coding=1;
otherwise co-coding=0;
end;
嗯...就是這樣
感謝版友的支持
※ 編輯: hanjing 來自: 140.138.153.11 (04/23 10:10)
14F:推 kenshin528:與其要這樣寫語法 真的不如手動CODEING 還比較快... 04/23 10:50
15F:→ lin15:美國,加拿大,墨西哥三個國家框在同一組 然後又美國加拿大一 04/23 11:57
16F:→ lin15:組? 好怪? 04/23 11:57