我有一个包含三个变量的数据集。下面是示例数据集。
Id Region Amount
1 A 20
1 A 40
1 A 50
2 B 40
2 B 30
2 B 60
3 C 10
3 C 30
4 D 20
4 D 50
4 D 10
我想为每个区域创建宏变量,然后将最小数量分配给这些变量。例如,在上述数据集的情况下,答案应为4个宏变量,其值为:
macro_var val
A 20
B 30
C 10
D 10
任何帮助将不胜感激。
将id选择到一个宏变量中,以便您可以遍历它们并找到每个id的最小值:
data temp;
input Id $ Region $ Amount $;
datalines;
1 A 20
1 A 40
1 A 50
2 B 40
2 B 30
2 B 60
3 C 10
3 C 30
4 D 20
4 D 50
4 D 10
;
run;
proc sql noprint;
select distinct region into: region_list separated by " " from temp;
quit;
%macro assign_vars;
%do i = 1 %to %sysfunc(countw(®ion_list.));
%let this_region = %scan(®ion_list., &i.);
%global min_of_region_&this_region.;
proc sql noprint;
select min(amount) into: min_of_region_&this_region. from temp (where = (region = "&this_region."));
quit;
%end;
%mend assign_vars;
%assign_vars;
%put &min_of_region_A.;
%put &min_of_region_B.;
%put &min_of_region_C.;
%put &min_of_region_D.;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句