首页 > 解决方案 > SAS 组合 PROC MEANS 的类值范围

问题描述

我正在上脚本课,但我不知道自己在做什么!对于我的任务,我应该每年打印 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,有没有办法将这些年份结合起来,这样我就可以为每年打印一组计算(最小值/最大值/平均值/标准)?如 1949 年的一组计算(1949-1949.917 的数据值),1950 年的另一组计算(1950-1950.917 的数据值)等。不确定我是否有意义!我一直在到处寻找几个小时,但我无法弄清楚!:(

标签: sas

解决方案


如果您希望 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;

推荐阅读