将 SAS 中的数据集转换为单向方差分析

Converting data set in SAS for 1-way anova

基本上我需要重新排序我的数据集。

数据由 4 列组成,每个治疗组一列。我正在尝试 运行 SAS 中的一个简单的单向方差分析,但我不知道如何重新排序数据以便有两列,一列包含响应,一列包含处理。

下面是创建示例数据集的一些示例代码。

data have;
input A B C D;
cards;
26.72 37.42 11.23 44.33
28.58 56.46 29.63 76.86
29.71 51.91 . .
;
run;
data want;
input Response Treatment $;
cards;
26.72 A
28.58 A
29.71 A
37.42 B
56.46 B
51.91 B
11.23 C
29.63 C
44.33 D
76.86 D
;
run;

我确信这是一个非常简单的解决方案,但我没有在网站的其他地方看到同样的问题。我通常是 R 用户,但必须使用 SAS 进行此分析,因此我可能会寻找错误的关键字。

我为此使用了 proc 转置,见下文

/*1. create row numbers for each obs*/
data have1;
 set have;
 if _n_=1 then row=1;
 else row+1;
run;

proc sort data=have1; by row; run;

/*Transpose the dataset by row number*/
proc transpose data=have1 out=want0; 
by row;
run;

/*Final dataset by removing missing values*/
data want;
 set want0;
 drop row;
 if COL1=. then delete;
 rename _NAME_=Response
        COL1=Treatment;
run;    

proc sort data=want; by Response; run;

proc print data=want; run;

如果这是您必须使用 SAS 的数据,请阅读,以便获得方差分析所需的结构。

data have;
   do rep=1 to 3;
      do trt='A','B','C','D';
         input y @;
         output;
         end;
      end;
   cards;
26.72 37.42 11.23 44.33
28.58 56.46 29.63 76.86
29.71 51.91 . .
;;;;
   run;
proc print;
   run;