使用 SAS 显示前 10 名员工
Display Top 10 Associates using SAS
我想显示基于地区的前 10 名同事列表。
如果 2 个员工的地区编号相同,那么它应该通过考虑另一个变量销售额来排名。
如果 2 个员工的区域和销售计数也相同,那么它应该在排名时考虑另一个变量。
对于这种情况,Proc rank 会起作用还是有其他方法可以实现此输出?
例如,
data input;
input assoc_nm dist_num sales_cnt sales_amt;
datalines;
raju 1 59 1000
kumar 1 59 1600
ramya 3 54 6900
lakshmi 2 65 9000
;
run;
dist_num=1,
的输出应该如下
assoc_nm sales_cnt sales_amt rank
kumar 59 1600 1
raju 59 1000 2
对于dist_num=2,
lakshmi 2 65 9000 1
对于dist_num=3
ramya 3 54 6900
因此对于每个区,您想要前 10 名,ranked/ordered 到 sales_cnt,并且在相同的 sales_cnt 内,到 sales_amt。
PROC SORT DATA=input ;
BY district sales_cnt sales_amt ;
RUN ;
DATA input2 ;
SET input ;
BY district sales_amt ;
IF FIRST.district THEN rank=0 ;
rank+1 ;
IF rank LE 10 ;
RUN ;
使用 WHERE 语句简单地过滤您想要的区值。
我想显示基于地区的前 10 名同事列表。 如果 2 个员工的地区编号相同,那么它应该通过考虑另一个变量销售额来排名。
如果 2 个员工的区域和销售计数也相同,那么它应该在排名时考虑另一个变量。
对于这种情况,Proc rank 会起作用还是有其他方法可以实现此输出?
例如,
data input;
input assoc_nm dist_num sales_cnt sales_amt;
datalines;
raju 1 59 1000
kumar 1 59 1600
ramya 3 54 6900
lakshmi 2 65 9000
;
run;
dist_num=1,
的输出应该如下assoc_nm sales_cnt sales_amt rank
kumar 59 1600 1
raju 59 1000 2
对于dist_num=2,
lakshmi 2 65 9000 1
对于dist_num=3
ramya 3 54 6900
因此对于每个区,您想要前 10 名,ranked/ordered 到 sales_cnt,并且在相同的 sales_cnt 内,到 sales_amt。
PROC SORT DATA=input ;
BY district sales_cnt sales_amt ;
RUN ;
DATA input2 ;
SET input ;
BY district sales_amt ;
IF FIRST.district THEN rank=0 ;
rank+1 ;
IF rank LE 10 ;
RUN ;
使用 WHERE 语句简单地过滤您想要的区值。