将 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;