SAS中文论坛

标题: 如何统计两个数据集中某个变量出现的频率,并生成新的数据集 [打印本页]

作者: shiyiming    时间: 2006-7-31 01:34
标题: 如何统计两个数据集中某个变量出现的频率,并生成新的数据集
想问一个很菜的问题(请勿见笑)

如何统计两个数据集中某个变量出现的频率,并生成新的数据集 例如,

Before
Data set A,
道路编号        车祸地点        车祸编号
a_route        milepost        caseno
10010        47.91        199104375
10020        10.43        199133604
10020        13.46        199108414
10060        3.45        199116117
10060        7.2        199116115
10080        2.8        199147873
.
.and Data set B,
道路编号        弯道起点        弯道终点
routeno        begmp        endmp
10010        0        24.7
10010        24.7        28.37
10010        28.37        34.37
10010        34.37        39.62
10010        39.62        40.12
10010        40.12        44.46
10010        44.46        44.92
10010        44.92        47.32
10010        47.32        48.11
10020        0        0.29
10020        0.29        0.43
10020        0.43        0.93
10020        0.93        1.15
10020        1.15        1.5
10020        1.5        1.97
10020        1.97        2.78
10020        2.78        3.11
10020        3.11        5.22
10020        5.22        5.6
10020        5.6        6.65
10020        6.65        9.5
10020        9.5        11.55
10020        11.55        11.69
10020        11.69        14.66
10020        14.66        14.96
10030        0        6
10030        6        8.25
10030        8.25        9.81
10030        9.81        10

.
.


After
Data set C,
道路编号        弯道起点        弯道终点        车祸频率
routeno        begmp        endmp        accfreq
10010        0        24.7        0
10010        24.7        28.37        0
10010        28.37        34.37        0
10010        34.37        39.62        0
10010        39.62        40.12        0
10010        40.12        44.46        0
10010        44.46        44.92        0
10010        44.92        47.32        0
10010        47.32        48.11        0
10020        0        0.29        0
10020        0.29        0.43        0
10020        0.43        0.93        0
10020        0.93        1.15        0
10020        1.15        1.5        0
10020        1.5        1.97        0
10020        1.97        2.78        0
10020        2.78        3.11        0
10020        3.11        5.22        0
10020        5.22        5.6        0
10020        5.6        6.65        0
10020        6.65        9.5        0
10020        9.5        11.55        1
10020        11.55        11.69        0
10020        11.69        14.66        1
10020        14.66        14.96        0
10030        0        6        0
10030        6        8.25        0
10030        8.25        9.81        0
10030        9.81        10        0
.
.
..
.
..

我的想法是:

proc sql;
  create table addcnt as
  select *,count(routeno) as cnt
  from a b
  group by routeno;
quit;

跪求高手指教。。。。。。。。
作者: shiyiming    时间: 2006-7-31 19:34
标题:
不明白你的意思啊
作者: shiyiming    时间: 2006-7-31 22:24
标题: RE:
I think lxlinxu attempt to join A and B, then count 道路编号.
[code:bb473]proc sql;
create table addcnt as
select *, count(routeno) as cnt
from a , b
group by routeno
having a.a_route =b.routeno;
quit;
[/code:bb473]
作者: shiyiming    时间: 2006-7-31 22:49
标题: 想统计每段弯道上车祸的频率并生成新的数据集C
如何统计两个数据集中某个变量出现的频率,并生成新的数据集 例如,

以知某条路上的车祸记录的数据集A和道路上弯道的数据集B,想统计每段弯道上车祸的频率并生成新的数据集C

Before
Data set A,
道路编号        车祸地点        车祸编号
a_route        milepost        caseno
10010        47.91        199104375
10020        10.43        199133604
10020        13.46        199108414
10060        3.45        199116117
10060        7.2        199116115
10080        2.8        199147873
.
.and Data set B,
道路编号        弯道起点        弯道终点
routeno        begmp        endmp
10010        0        24.7
10010        24.7        28.37
10010        28.37        34.37
10010        34.37        39.62
10010        39.62        40.12
10010        40.12        44.46
10010        44.46        44.92
10010        44.92        47.32
10010        47.32        48.11
10020        0        0.29
10020        0.29        0.43
10020        0.43        0.93
10020        0.93        1.15
10020        1.15        1.5
10020        1.5        1.97
10020        1.97        2.78
10020        2.78        3.11
10020        3.11        5.22
10020        5.22        5.6
10020        5.6        6.65
10020        6.65        9.5
10020        9.5        11.55
10020        11.55        11.69
10020        11.69        14.66
10020        14.66        14.96
10030        0        6
10030        6        8.25
10030        8.25        9.81
10030        9.81        10

.
.


After
Data set C,
道路编号        弯道起点        弯道终点        车祸频率
routeno        begmp        endmp        accfreq
10010        0        24.7        0
10010        24.7        28.37        0
10010        28.37        34.37        0
10010        34.37        39.62        0
10010        39.62        40.12        0
10010        40.12        44.46        0
10010        44.46        44.92        0
10010        44.92        47.32        0
10010        47.32        48.11        0
10020        0        0.29        0
10020        0.29        0.43        0
10020        0.43        0.93        0
10020        0.93        1.15        0
10020        1.15        1.5        0
10020        1.5        1.97        0
10020        1.97        2.78        0
10020        2.78        3.11        0
10020        3.11        5.22        0
10020        5.22        5.6        0
10020        5.6        6.65        0
10020        6.65        9.5        0
10020        9.5        11.55        1
10020        11.55        11.69        0
10020        11.69        14.66        1
10020        14.66        14.96        0
10030        0        6        0
10030        6        8.25        0
10030        8.25        9.81        0
10030        9.81        10        0
.
.
..

我的想法是:

proc sql;
  create table addcnt as
  select *,count(routeno) as cnt
  from a b
  group by id;
quit;

可是不能实现, 跪求高手指教。。。。。。。。




欢迎光临 SAS中文论坛 (http://mysas.net/forum/) Powered by Discuz! X3.2