我试图合并和汇总具有不同值的数据集的某些观测值,以作为其共同变量,在这种情况下,我试图合并三个年龄段的死亡人数(85-90),(91-95) ,(95+)个年龄段(85岁以上)。我们的老师告诉我们,最好不要创建新变量,而使用proc手段,制表等。
我已经阅读了所有的google页面,我所能找到的只是一个proc手段,它通过变量进行组合和求和,但是我不需要整个小组的求和,而只是对该小组的一些观察。
具有类似的数据集:
.
.
.
71 to 75 3
76 to 80 4
81 to 85 2
86 to 90 3
91 to 95 1
95+ 3
我想拥有它
.
.
.
71 to 75 3
76 to 80 4
81 to 85 2
85+ 7
谢谢!
答案 0 :(得分:1)
创建一种自定义格式,以将现有的文字分类映射为新的分类。
* A format to map literal agecat strings to broader categories;
proc format ;
value $age_cat_want (default=20)
'86 to 90' = '86+'
'91 to 95' = '86+'
'95+' = '86+'
;
这仅适用于连接类别,从而创建更粗略的聚合。
示例:
* A format to get you into the pickle you are in;
proc format;
value age_cat_have
71-75 = '71 to 75'
76-80 = '76 to 80'
81-84 = '81 to 85'
86-90 = '86 to 90'
91-95 = '91 to 95'
95-high = '95+'
;
data have;
input age @@;
agecat = put (age, age_cat_have.);
datalines;
71 72 73
76 77 78 79
82 83
87 86 86
94
99 101 113
;
proc freq data=have;
title "Original categories are character literals";
table agecat;
run;
* A format to map literal agecat strings to broader categories;
proc format ;
value $age_cat_want (default=20)
'86 to 90' = '86+'
'91 to 95' = '86+'
'95+' = '86+'
;
proc freq data=have;
title "New age categories via custom format $age_cat_want";
table agecat;
format agecat $age_cat_want.;
run;
注意:无法显式拆分现有的文字分类。您必须对每个类别中的年龄值分布进行假设,并估算出可以应用于不同年龄映射格式的特定年龄。