比较2列的平均值

时间:2015-06-18 07:59:40

标签: sas

例如,我有一个这样的数据集(值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

1 个答案:

答案 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;