我需要在每个年龄段中为每个id
选择一个中值。所以在下表中,对于id = 1
,在6个月的age_range
中,我需要为第2行选择值。基本上,我需要为每个id
创建一个列,其中只有选择每个范围。
id wt age_range
1 22 6
1 23 6
1 24 6
2 25 12
2 24 12
2 44 18
答案 0 :(得分:0)
如果我理解正确,您正在寻找一个新列,其中每个id和age_range都有中值,以便进行比较。您可以使用proc means
输出中位数然后将其合并回原始数据集,在基本SAS中执行此操作。但是,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