buiquanghai
buiquanghai

Reputation: 81

Compare averages of 2 columns

For example, i have a data set like this (the value a1 a2 a3 b1 b2 b3 are numeric):

A   B
a1  b1
a2  b2
a3  b3

I want to compare the average of 2 class A and B using proc ttest. But it seems that i have to change my data set in order to use this proc. I read lots of tutorials about the proc ttest and all of them use the data sets in this form below:

class   value
A        a1
A        a2
A        a3 
B        b1
B        b2
B        b3

So my question is: Does it exist a method to do the proc ttest without changing my data set?

Thank you and sorry for my bad english :D

Upvotes: 0

Views: 190

Answers (1)

Longfish
Longfish

Reputation: 7602

The short answer is no, you can't run a ttest in SAS that compares multiple columns. proc ttest, when used for 2 samples, relies on the variable in the class statement to compare the groups. Only one variable can be entered and it must have 2 levels, therefore the structure of your data is not compatible with this.

You will therefore need to change the data layout, although you could do this in a view so that you don't create a new physical dataset. Here's one way to do that.

/* 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;

Upvotes: 2

Related Questions