Select 每个时间范围的中值

Select median value per time range

我需要 select 每个 id 每个年龄段的中值。因此,在接下来的 table 中,对于 id = 1,在 6 个月的 age_range 中,我需要为第 2 行 select 值。基本上,我需要为每个 id 其中只有每个范围的中位数是 selected。

id      wt    age_range
1       22       6
1       23       6
1       24       6
2       25       12
2       24       12
2       44       18

如果我没理解错的话,您希望创建一个新列,其中每个 id 和 age_range 都有用于比较的中值。您可以在 base SAS 中执行此操作,方法是使用 proc means 输出中位数,然后将其合并回原始数据集。但是 proc sql 将一步完成所有这些,并轻松命名您的新列。

proc sql data;
  create table want as
  select id, wt, age_range, median(wt) as median_wt
  from have
  group by id, age_range;
quit;


id  wt  age_range  median_wt
1   24         6          23
1   22         6          23
1   23         6          23
2   24        12        24.5
2   25        12        24.5
2   44        18          44