SAS:PROC表示在类变量中分组

SAS:PROC表示在类变量中分组,sas,Sas,我有以下示例数据和'proc means'命令 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意味着该命令打印出上述每个国家的列表。我如何在PROC MEANS步骤中将其中

我有以下示例数据和'proc means'命令

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意味着该命令打印出上述每个国家的列表。我如何在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命令中进行分组


谢谢。

这对于任何采用CLASS语句的进程来说都非常简单

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 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作为value语句,START作为要标记的值,label作为标签。(END=范围结束,如果是数字)。还有其他选项,将详细介绍