我对SAS和统计分析都很陌生。我拥有计算机科学学位,我正在参加统计学的在线课程,并对如何在SAS中实现我想要的东西感到困惑。我在网上搜索无济于事,但我可能甚至没有使用正确的术语,因为我不太了解SAS或统计数据。
基本上,我在数据集中有一些变量,我想在频率表中有条件地显示它们。
例如,假设我有变量Gender,Age和Alcohol_use。我想要做的是有一个或多个频率表,基本上将性别和年龄与酒精使用联系起来。所以,如果有意义的话,我想在性别和年龄的同时分解它。一个例子是:
男,21-25岁 - >适度使用
女,21-25岁 - >低用量
男性,26-30岁 - >大量使用
等...
所以,我想我想在前两个变量的某些条件下为第三个变量设置频率表,如果这是有道理的。
通常,在显示频率表时,我只写PROC FREQ; TABLES性别年龄Alcohol_use;
我会改变那里的任何东西,因为它是受影响的频率表吗?或者我是否需要在程序的数据部分添加一些条件?
任何帮助都会很棒。如果您对我的问题有任何澄清,请告诉我。谢谢!
答案 0 :(得分:2)
您与PROC FREQ
走在正确的轨道上。该过程将生成频率表报告,甚至包含结果的输出数据集。首先,这是一些补充数据:
data have;
do gender = 1,2;
do tmp=1 to 10;
do age=10,21,27,32;
alcohol_use = round(ranuni(12345)*100);
id + 1;
output;
end;
end;
end;
run;
我将其与其余答案分开以更好地说明。您的变量形式在您的问题中并不清楚,因此我们假设您的数据是连续的。在这种情况下,我们可以使用PROC FORMAT
来定义变量的分组格式:
proc format;
value agefmt
0-20 = '20 and below'
21-25 = '21-25'
26-30 = '26-30'
31-high = '31 and above';
value usgfmt
0<-30 = 'Low'
30<-80 = 'Moderate'
80<-high = 'Heavy';
value genfmt
1 = 'Male'
2 = 'Female';
run;
现在只需要运行PROC FREQ
。 TABLE
语句中的星号定义了您想要的交互级别,OUT=
选项提供了要创建的新SAS数据集的名称,其中包含汇总结果:
proc freq data=have;
table gender * age * alcohol_use / list out=want;
format gender genfmt. age agefmt. alcohol_use usgfmt.;
run;
如果您的原始数据包含“男性”和“重度”等硬编码值,则不需要PROC FORMAT
语句的FORMAT
部分。