PROC MEANS 的 class 值的 SAS 组合范围

SAS combining range of class values for PROC MEANS

我正在编写脚本class,但我不知道自己在做什么! 对于我的作业,我应该每年打印 min/max/mean/std。我使用的 .csv 文件有一个年份列,年份为

1949.083
1949.167
1949.25
1949.333
1949.417
1949.5
1949.583
1949.667
1949.75
1949.833
1949.917
1950
1950.083
1950.167

依此类推,一直到 1960 年。 假设我使用的是 PROC MEANS,是否有一种方法可以合并这些年,以便我可以为每年打印一组计算 (min/max/mean/std)?正如 1949 年的一组计算(1949-1949.917 的数据值),1950 年的另一组计算(1950-1950.917 的数据值)等。不确定我是否有道理!我到处找了几个小时,我想不通! :(

如果您希望 PROC MEANS 每年计算单独的统计数据,您可以使用 CLASS 语句。使用 CLASS 语句,它将根据格式化值定义组。因此,如果您仅使用格式 4. 和变量 YEAR,那么每个值都将映射到一个简单的 4 位数字值。

proc means data=have min max mean std ;
  class year;
  format year 4.;
  var analysis_var ;
run;

但这会将 1,949.667 之类的值四舍五入为 1950 而不是 1949。如果您想忽略年份的小数部分,您可以使用 INT() 函数。因此,首先创建一个新变量,然后在 CLASS 语句中使用该新变量。

data step1;
  set have;
  yrnum = int(year);
run;
proc means data=step1 min max mean std ;
  class yrnum ;
  var analysis_var ;
run;