0

我有以下示例数据和“proc 方法”命令。

data have;
input measure country $;
datalines; 
250 UK
800 Ireland 
500 Finland
250 Slovakia
3888 Slovenia
34 Portugal
44 Netherlands
4666 Austria
run;
PROC PRINT data=have; RUN;

下面的 PROC MEANS 命令打印出上面每个国家的列表。如何在 PROC MEANS 步骤中将其中一些国家(即英国和爱尔兰、斯洛伐克/斯洛文尼亚作为中欧)分组,而不是添加另一个数据步骤来添加“案例时间”等?

proc means data=have sum  maxdec=2 order=freq STACKODS;
var measure;
class country;
run;

感谢您在这方面的任何帮助。我知道您可以在 PROC MEANS 命令本身中执行各种操作(例如通过执行此操作来限制国家/地区的数量:

proc means data=have(WHERE=(country not in ('Finland', 'UK')

为简洁起见,我想在 PROC MEANS 命令中进行分组。

谢谢。

4

1 回答 1

0

对于任何采用 CLASS 语句的 PROC 的格式,这很容易。

只需使用代码或数据构建格式;然后在 PROC MEANS 语句中应用该格式。

proc format lib=work;
value $countrygroup
"UK"="British Isles"
"Ireland"="British Isles"
"Slovakia","Slovenia"="Central Europe"
;
quit;

proc means data=have;
class country;
var measure;
format country $countrygroup.;
run;

通常最好为国家/地区设置数字代码,然后将它们格式化为任何时候需要的任何一组名称,特别是大写/等。很烦人,但即使在这里也能很好地工作。

PROC FORMAT 中的CNTLIN=选项允许您从数据集制作格式,其中 FMTNAME 作为值语句,START 作为值到标签,LABEL 作为标签。(END=范围结束,如果是数字。)还有其他选项,文档更详细。

于 2013-07-23T20:59:35.203 回答