1. You didn't specify a VAR statement. So SAS calculates statistics for all numeric variables.
2. You DID specify the name of the output variables....but because you didn't specify the VAR statement, SAS uses the order they appear in the data set, which doesn't appear to match the order of the output variables.
You can use implicit naming but then you need to consistently use it.
Or explicitly declare everything.
proc means data=HW8;
output out=A2 mean= std= /autoname;
run;
I would very very strongly recommend you add a DATA= statement to all your PROC as well. Otherwise you're implicitly referencing your data set and as you can see, it is hard to know which data set would be used in the analysis.
So, not only the PROC MEANS, but PROC TTEST, otherwise I guarantee you're going to have wrong results throughout. You may get results still, but they may not be what you expect and if you're just learning it's very very easy to miss it. In general, this is never good practice and after programming ten years I never do this.
See the red sections below.
Libname HW 'C:\Desktop';*I hope you're not writing to your desktop, it'll be a massive mess;
Data HW8;
Set HW.HW8;
DropInDBP = DBP1-DBP2;
run;
Proc univariate normal; * Which dataset is being used here?;
var DBP1 DBP2 DropInDBP;
histogram / normal;
run;
Proc ttest h0=66; *Which dataset is being used here?;
var DBP1;
run;
Proc ttest h0=62;*which dataset is being used here?;
var DBP2;
run;
Proc ttest;*which data set is being used here?;
paired DBP1*DBP2;
run;
Proc Means Data=HW8; *easy to see this is using HW8 data with the DATA=;
Output out=A2 mean = AveDBP1 AveDBP2 std = SDDBP1 SDDBP2;
run;
Proc print data=A2;
run;
@sachin05t wrote:
Question:
After I run Proc Print data=A2, the output does not seem to be right.
Variable
N
Mean
Std Dev
Minimum
Maximum
ID
DBP1
DBP2
DropInDBP
47
47
47
47
173.3617021
64.6808511
63.9148936
0.7659574
85.6942050
7.1539177
7.2466778
2.3051244
101.0000000
48.0000000
46.0000000
-4.0000000
403.0000000
82.0000000
82.0000000
8.0000000
Obs
_TYPE_
_FREQ_
AveDBP1
AveDBP2
SDDBP1
SDDBP2
1
0
47
173.362
64.6809
85.6942
7.15392
As you can see, the AveDBP1 is in fact the average of ID,
The AveDBP2 is in fact the average of DBP1 and so on.
It seems that the calculation happens for the wrong variable. Where am I going wrong?
Thank you.
Libname HW 'C:\Desktop';
Data HW8;
Set HW.HW8;
DropInDBP = DBP1-DBP2;
run;
Proc univariate normal;
var DBP1 DBP2 DropInDBP;
histogram / normal;
run;
Proc ttest h0=66;
var DBP1;
run;
Proc ttest h0=62;
var DBP2;
run;
Proc ttest;
paired DBP1*DBP2;
run;
Proc Means;
Output out=A2 mean = AveDBP1 AveDBP2 std = SDDBP1 SDDBP2;
run;
Proc print data=A2;
run;
... View more