县... ... AgeGrp人口
甲............. 1 .......... 200
甲............. 2 .......... 100
甲............. 3 .......... 100
一............所有......... 400
乙............. 1 .......... 200
所以,我有一个县的名单,我想找到18岁以下的人口占每个县人口的百分比,所以从上表中我只想添加agegrp 1和2除以'所有'人口.在这种情况下,它将是300/400.我想知道是否可以为每个县做这件事.
让我们将您的SAS数据集称为" HAVE "并说它有两个字符变量(County和AgeGrp)和一个数字变量(Population).让我们说你总是在你的数据为每个组一个观测县有AgeGrp='All'上价值人口是总为县.
为了安全起见,让我们对County的数据进行排序,并在另一个数据步骤中对其进行处理,创建一个名为" WANT " 的新数据集,其中包含县人口的新变量(TOT_POP),即您想要的两个Age Group值的总和(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;
Run Code Online (Sandbox Code Playgroud)
请注意,AgeGrp='All'实际上并不需要包含观察结果; 您也可以创建另一个变量来收集所有年龄组的运行总计.