排序变量和过程报告
Sorting variables and proc report
我有以下形式的数据集:
GROUP 1 GROUP 2 TOTAL
A 400
A a1 100
A a2 100
A a3 300
B 300
B b1 400
B b2 200
C 350
C c1 100
C c2 500
GROUP 1 和GROUP 2 是字符变量,TOTAL 是数值变量。字符变量按字母顺序排序,而不是按变量 TOTAL 排序。
我想通过降低频率(TOTAL 变量)在组内(首先是 GROUP 1)对其进行排序。如果相同的组具有相同的频率,则应用字母顺序。所以输出应该是这样的:
GROUP 1 GROUP 2 TOTAL
A 400
A a3 300
A a1 100
A a2 100
C 350
C c2 500
C c1 100
B 300
B b1 400
B b2 200
有没有一种在 proc 报告过程中快速完成此操作而不会弄乱初始数据集的方法?或者即使这是不可能的,是否有一种快速的方法可以有效地对其进行适当的排序?我想到的唯一方法是对每个组单独排序,然后合并排序的数据集,这太费时间了。
您只需要确保每一行都有所有要排序的东西。在这种情况下,您只需要添加两件事:将该总数或 group2=' ' 上的任何内容下拉到该 Group1 的每一行,然后识别那些顶部行以将它们保持在顶部。然后就可以正常排序了。
PROC REPORT
可能也可以使用相同的 want
数据集来执行此操作,但是如果没有代码显示您在做什么,则很难提供 - 但概念基本相同。
data have;
input GROUP1 $ GROUP2 $ TOTAL;
datalines;
A . 400
A a1 100
A a2 100
A a3 300
B . 300
B b1 400
B b2 200
C . 350
C c1 100
C c2 500
;;;;
run;
data for_sort;
set have;
retain total_group;
if missing(group2) then total_group=total;
if missing(group2) then topgroup = 1;
else topgroup = 2;
run;
proc sort data=for_sort out=want;
by descending total_group group1 topgroup descending total group2;
run;
我有以下形式的数据集:
GROUP 1 GROUP 2 TOTAL
A 400
A a1 100
A a2 100
A a3 300
B 300
B b1 400
B b2 200
C 350
C c1 100
C c2 500
GROUP 1 和GROUP 2 是字符变量,TOTAL 是数值变量。字符变量按字母顺序排序,而不是按变量 TOTAL 排序。
我想通过降低频率(TOTAL 变量)在组内(首先是 GROUP 1)对其进行排序。如果相同的组具有相同的频率,则应用字母顺序。所以输出应该是这样的:
GROUP 1 GROUP 2 TOTAL
A 400
A a3 300
A a1 100
A a2 100
C 350
C c2 500
C c1 100
B 300
B b1 400
B b2 200
有没有一种在 proc 报告过程中快速完成此操作而不会弄乱初始数据集的方法?或者即使这是不可能的,是否有一种快速的方法可以有效地对其进行适当的排序?我想到的唯一方法是对每个组单独排序,然后合并排序的数据集,这太费时间了。
您只需要确保每一行都有所有要排序的东西。在这种情况下,您只需要添加两件事:将该总数或 group2=' ' 上的任何内容下拉到该 Group1 的每一行,然后识别那些顶部行以将它们保持在顶部。然后就可以正常排序了。
PROC REPORT
可能也可以使用相同的 want
数据集来执行此操作,但是如果没有代码显示您在做什么,则很难提供 - 但概念基本相同。
data have;
input GROUP1 $ GROUP2 $ TOTAL;
datalines;
A . 400
A a1 100
A a2 100
A a3 300
B . 300
B b1 400
B b2 200
C . 350
C c1 100
C c2 500
;;;;
run;
data for_sort;
set have;
retain total_group;
if missing(group2) then total_group=total;
if missing(group2) then topgroup = 1;
else topgroup = 2;
run;
proc sort data=for_sort out=want;
by descending total_group group1 topgroup descending total group2;
run;