如何对SAS中不同公共变量的观测值进行汇总和组合

如何对SAS中不同公共变量的观测值进行汇总和组合,sas,Sas,我试图将一个数据集的某些观察值与其公共变量的不同值进行组合和求和,在本例中,我试图将三个年龄段(85-90),(91-95),(95+)的死亡数组合在一个(85+)年龄段中。我们的老师告诉我们,如果我们不创建一个新的变量并使用proc方法、制表法等,效果会更好 我已经阅读了谷歌的每一个页面,我能找到的只是一个proc方法,即通过变量进行组合和求和,但我不需要对整个组进行求和,只需要对组进行一些观察 具有如下数据集: . . . 71 to 75 3 76 to 80

我试图将一个数据集的某些观察值与其公共变量的不同值进行组合和求和,在本例中,我试图将三个年龄段(85-90),(91-95),(95+)的死亡数组合在一个(85+)年龄段中。我们的老师告诉我们,如果我们不创建一个新的变量并使用proc方法、制表法等,效果会更好

我已经阅读了谷歌的每一个页面,我能找到的只是一个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

谢谢

创建自定义格式,将现有文字分类映射到新的文字分类

* 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;

注意:无法显式拆分现有文字分类。您必须对每个类别内的年龄值分布进行假设,并输入可应用于不同年龄映射格式的特定年龄。

您的年龄变量在数据集中是否像自定义格式的数字一样,或者年龄变量的值是否按字面意思为
“71到75”
,等等,你是否已经有过一次年龄为95岁以上、死亡为3岁的观察?或者你有三个观察结果,每个都有死亡=1,而你的例子是对它做一些事情的结果?给我们看看你的代码。这些是文字字符变量,不,我没有新的观察结果。小调:对我来说,
95+
意味着
=95
,但95已经在前面的类别中,所以标签应该是
96+
>95