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