让我们将您的 SAS 数据集称为“ HAVE ”,并说它有两个字符变量(County和AgeGrp)和一个数字变量(Population)。假设您的数据集中始终对每个县都有一个观察结果,其中PopulationAgeGrp='All'
的值是该县的总数。
为了安全起见,让我们按县对数据集进行排序并在另一个数据步骤中对其进行处理,创建一个名为“ WANT ”的新数据集,其中包含县人口的新变量 ( TOT_POP ),即您想要的两个年龄组值的总和( TOT_GRP ) 并计算比例 ( AgeGrpPct ):
proc sort data=HAVE;
by County;
run;
data WANT;
retain TOT_POP TOT_GRP 0;
set HAVE;
by County;
if first.County then do;
TOT_POP = 0;
TOT_GRP = 0;
end;
if AgeGrp in ('1','2') then TOT_GRP + Population;
else if AgeGrp = 'All' then TOT_POP = Population;
if last.County;
AgeGrpPct = TOT_GRP / TOT_POP;
keep County TOT_POP TOT_GRP AgeGrpPct;
output;
run;
注意观察包含AgeGrp='All'
并不是真正需要的;您也可以创建另一个变量来收集所有年龄组的运行总数。