如何在SAS中对不同公共变量的观测值进行求和

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在SAS中对不同公共变量的观测值进行求和相关的知识,希望对你有一定的参考价值。

我试图将具有不同值的数据集的某些观察结果和它们的共同变量相加,在这种情况下,我试图将三个年龄间隔(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;

注意:无法显式拆分现有的文字分类。您必须对每个类别中的年龄值分布做出推定,并将特定年龄归结为可应用于不同年龄映射格式的特定年龄。

以上是关于如何在SAS中对不同公共变量的观测值进行求和的主要内容,如果未能解决你的问题,请参考以下文章

sas如何计算相邻观测的差值

SAS 操作数据集的观测

如何将SAS数据集中全部为空值的变量删除

Lesson 3 SAS实用函数

如何在 SwiftUI 中对列表中的值求和?

如何在 XSLT 中对值进行分组和求和