在SAS中按月汇总结果

时间:2017-03-28 03:23:08

标签: sas

我有这种数据

Configuration   Retail Price    month
 1               450         Jan
 1               520         Feb
 1               630         Mar
 5               650         Jan
 5               320         Feb
 5               480         Mar
 9               770         Jan
 9               180         Feb
 9               320         Mar

我希望我的数据看起来像这样

Configuration   Jan Feb Mar
      1         450 520 630
      5         650 320 480
      9         770 180 320

1 个答案:

答案 0 :(得分:0)

生成一些数据以修补:

data begin;
    length Configuration 3  Retail_Price 3 month $3;
    input Configuration  Retail_Price month;
    datalines;
     1 450 Jan
     1 520 Feb
     1 630  Mar
     5 650 Jan
     5 320 Feb
     5 480 Mar
     9 770 Jan
     9 180 Feb
     9 320 Mar
     ; 
run;

在SAS中,一切都必须正确排序。 (或者你可以使用索引,但是那个不同的东西)为此我们使用 PROC SORT

proc sort data= begin; by Configuration month; run;

计算总和的方法是使用 PROC MEANS

proc means data=begin noprint; /*Noprint is for convienience*/
    by Configuration month; /*These are the subsets*/
    output out = From_means(drop=_TYPE_ _FREQ_) /*Drops are for ease sake*/
    sum(Retail_Price)=
    ;
run;

此时我们的数据格式很窄。将其转换为宽格式的方法是 PROC TRANSPOSE

proc transpose data=From_means out=Wide_format;
    by Configuration;
    id month;
run;

请记住,还有其他多种方法可以实现相同目标。一种流行的方法是将 PROC SQL 用于几乎所有内容,但根据我的经验,大型数据集最好由SAS proc命令处理..