在PROC TABULATE中对行进行分组。

问题描述 投票:0回答:1

我有以下(假的)犯罪者数据。

/* Some fake-data */
DATA offenders;
INPUT id :$12. crime :4. offenderSex :$1. count :3.;
INFORMAT id $12.;
INFILE DATALINES DSD;
DATALINES;
1,110,f,3
2,32,f,1
3,31,m,1
4,113,m,1
5,110,m,1
6,31,m,1
7,31,m,1
8,110,f,2
9,113,m,1
10,31,m,1
11,113,m,1
12,110,f,1
13,32,m,1
14,31,m,1
15,31,m,1
16,31,m,1
17,110,f,2
18,113,m,2
19,31,m,1
20,31,m,1
21,110,m,4
22,32,f,1
23,31,m,1
24,31,m,1
25,110,f,4
26,110,m,1
27,110,m,1
28,110,m,2
29,32,m,1
30,113,f,1
31,32,m,1
32,31,f,1
33,110,m,1
34,32,f,1
35,113,m,2
36,31,m,1
37,113,m,1
38,110,f,1
39,113,u,2
;
RUN;

proc format;
 value crimes 110 = 'Theft'
              113 = 'Robbery'
              32 = 'Assault'
              31 = 'Minor assault';
run;

我想用PROC TABULATE创建一个交叉表。

proc tabulate;
format crime crimes.;
freq count;
class crime offenderSex;
table crime="Type of crime", offenderSex="Sex of the offender" /misstext="0";
run;

这样我就有了这样一个表

                      m   f
------------------------------------
Minor assault   |
Assault         |
Theft           |
Robbery         |

现在,我想对不同类型的犯罪进行分组。

"袭击 "和 "轻微袭击 "应该归入 "暴力犯罪 "类别 "盗窃 "和 "抢劫 "应该归入 "侵犯财产罪 "类别。

                             m   f
------------------------------------
Minor assault             |
Assault                   |
*Total violent crimes*    |
Theft                     |
Robbery                   |
*Total property crimes*   |

谁能告诉我怎么做?我试着对 "犯罪 "变量使用另一种格式,并在PROC TABULATE中使用 "类别*犯罪",但结果是这样的,这不是我想要的。

                                               m   f
-------------------------------------------------------
Violent crimes   Minor assault           |
                 Assault                 |
Property crimes  Theft                   |
                 Robbery                 |
sas proc tabulate
1个回答
1
投票

使用 all= 表维度内的选项。

table group='Category' * (crime="犯罪类型" All='Total'), offenderSex="犯罪者性别" misstext="0";
© www.soinside.com 2019 - 2024. All rights reserved.