在条件(sas)下跨行垂直求和

iup*_*ter 0 sas

县... ... AgeGrp人口

甲............. 1 .......... 200

甲............. 2 .......... 100

甲............. 3 .......... 100

一............所有......... 400

乙............. 1 .......... 200

所以,我有一个县的名单,我想找到18岁以下的人口占每个县人口的百分比,所以从上表中我只想添加agegrp 1和2除以'所有'人口.在这种情况下,它将是300/400.我想知道是否可以为每个县做这件事.

Bel*_*Bob 5

让我们将您的SAS数据集称为" HAVE "并说它有两个字符变量(CountyAgeGrp)和一个数字变量(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'实际上并不需要包含观察结果; 您也可以创建另一个变量来收集所有年龄组的运行总计.