SAS:相关变量

时间:2013-03-31 23:04:14

标签: statistics sas frequency-distribution

我对SAS和统计分析都很陌生。我拥有计算机科学学位,我正在参加统计学的在线课程,并对如何在SAS中实现我想要的东西感到困惑。我在网上搜索无济于事,但我可能甚至没有使用正确的术语,因为我不太了解SAS或统计数据。

基本上,我在数据集中有一些变量,我想在频率表中有条件地显示它们。

例如,假设我有变量Gender,Age和Alcohol_use。我想要做的是有一个或多个频率表,基本上将性别和年龄与酒精使用联系起来。所以,如果有意义的话,我想在性别和年龄的同时分解它。一个例子是:

男,21-25岁 - >适度使用
女,21-25岁 - >低用量
男性,26-30岁 - >大量使用
等...

所以,我想我想在前两个变量的某些条件下为第三个变量设置频率表,如果这是有道理的。

通常,在显示频率表时,我只写PROC FREQ; TABLES性别年龄Alcohol_use;

我会改变那里的任何东西,因为它是受影响的频率表吗?或者我是否需要在程序的数据部分添加一些条件?

任何帮助都会很棒。如果您对我的问题有任何澄清,请告诉我。谢谢!

1 个答案:

答案 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 FREQTABLE语句中的星号定义了您想要的交互级别,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部分。