gpt4 book ai didi

sas - 如何按格式化值排序

转载 作者:行者123 更新时间:2023-12-02 08:37:21 25 4
gpt4 key购买 nike

proc sort data=sas.mincome;
by F3 F4;
run;

Proc sort 不按格式化值对数据集进行排序,仅按内部值进行排序。我需要在合并之前按两个变量排序。有没有办法用 proc sort 做到这一点?

最佳答案

我认为您不能在 proc 排序中按格式化值排序,但您绝对可以使用简单的 proc SQL 过程按格式化值对数据集进行排序。 proc SQL类似于data step和proc sort,但更强大。

用于按格式化值排序的 proc sql 的一般语法是:

proc sql;
create table NewDataSet as
select variable(s)
from OriginalDataSet
order by put(variable1, format1.), put(variable2, format2.);

quit;

例如,我们有一个示例数据集,其中包含一些人的姓名、性别和年龄,我们想对它们进行排序:

proc format;
value gender 1='Male'
2='Female';
value age 10-15='Young'
16-24='Old';
run;


data work.original;
input name $ sex age;
datalines;
John 1 12
Zack 1 15
Mary 2 18
Peter 1 11
Angela 2 24
Jack 1 16
Lucy 2 17
Sharon 2 12
Isaac 1 22
;
run;

proc sql;
create table work.new as
select name, sex format=gender., age format=age.
from work.original
order by put(sex, gender.), put(age, age.);
quit;

work.new 的输出将是:

                             Obs     name      sex       age

1 Mary Female Old
2 Angela Female Old
3 Lucy Female Old
4 Sharon Female Young
5 Jack Male Old
6 Isaac Male Old
7 John Male Young
8 Zack Male Young
9 Peter Male Young

如果我们使用 proc 按性别排序,那么男性将排在第一位,因为我们使用 1 代表男性,使用 2 代表女性,这不是我们想要的。因此,我们可以清楚地看到 proc sql 实际上确实根据格式化值对它们进行了排序(首先是女性,其次是男性)。

希望这对您有所帮助。

关于sas - 如何按格式化值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20035770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com