例如,我有一个这样的数据集(值a1 a2 a3 b1 b2 b3是数字):
A B
a1 b1
a2 b2
a3 b3
我想用proc ttest比较2级A和B的平均值。但似乎我必须更改我的数据集才能使用此proc。我阅读了很多关于proc ttest的教程,所有这些教程都使用下面这个表格中的数据集:
class value
A a1
A a2
A a3
B b1
B b2
B b3
所以我的问题是:它是否存在一种方法来执行proc ttest而不更改我的数据集?
谢谢你,抱歉我的英语不好:D
答案 0 :(得分:2)
简短的回答是否定的,你不能在SAS中运行比较多列的ttest。 proc ttest
,当用于2个样本时,依赖于class
语句中的变量来比较组。只能输入一个变量,它必须有2个级别,因此数据结构与此不兼容。
因此,您需要更改数据布局,但您可以在视图中执行此操作,以便不创建新的物理数据集。这是一种方法。
/* create dummy data */
data have;
input A B;
datalines;
10 11
15 14
20 21
25 24
;
run;
/* create a view that turns vars A and B into a single variable */
data have_trans / view=have_trans;
set have;
array vals{2} A B;
length grouping $2;
do i = 1 to 2;
grouping = vname(vals{i}); /* extracts the current variable name (A or B) */
value = vals{i}; /* extracts the current value */
output;
end;
drop A B i; /* drop unwanted variables */
run;
/* perform ttest */
proc ttest data=have_trans;
class grouping;
var value;
run;