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
我需要 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