SAS使用数据集创建其他数据集

SAS使用数据集创建其他数据集,sas,Sas,我应该创建一个汇总数据集,包含按性别和群体细分的平均值、中位数和标准差(使用类别声明)。使用此摘要数据集,创建四个其他数据集(在一个数据步骤中),如下所示: (1) 中庸 (2) 按性别分列的统计数据 (3) 按组分列的统计数据 (4) 按性别和群体分列的统计数据 给出了使用CHARTYPE选项的提示 我提供了我尝试过的解决方案,但我不认为我是按照要求的方式做的 DATA CLINICAL; *Use LENGTH statement to control the order of

我应该创建一个汇总数据集,包含按性别和群体细分的平均值、中位数和标准差(使用类别声明)。使用此摘要数据集,创建四个其他数据集(在一个数据步骤中),如下所示:

(1) 中庸 (2) 按性别分列的统计数据 (3) 按组分列的统计数据 (4) 按性别和群体分列的统计数据

给出了使用CHARTYPE选项的提示

我提供了我尝试过的解决方案,但我不认为我是按照要求的方式做的

DATA CLINICAL;
   *Use LENGTH statement to control the order of
    variables in the data set;
   LENGTH PATIENT VISIT DATE_VISIT 8;
   RETAIN DATE_VISIT WEIGHT;
   DO PATIENT = 1 TO 25;
      IF RANUNI(135) LT .5 THEN GENDER = 'Female';
      ELSE GENDER = 'Male';
      X = RANUNI(135);
      IF X LT .33 THEN GROUP = 'A';
      ELSE IF X LT .66 THEN GROUP = 'B';
      ELSE GROUP = 'C';
      DO VISIT = 1 TO INT(RANUNI(135)*5);
         IF VISIT = 1 THEN DO;
             DATE_VISIT = INT(RANUNI(135)*100) + 15800;
             WEIGHT = INT(RANNOR(135)*10 + 150);
         END;
         ELSE DO;
            DATE_VISIT = DATE_VISIT + VISIT*(10 + INT(RANUNI(135)*50));
            WEIGHT = WEIGHT + INT(RANNOR(135)*10);
         END;
         OUTPUT;
         IF RANUNI(135) LT .2 THEN LEAVE;
      END;
   END;
   DROP X;
   FORMAT DATE_VISIT DATE9.;
RUN;
PROC MEANS DATA=CLINICAL;
CLASS GENDER GROUP;
OUTPUT OUT=SUMMARY
       MEAN=
       MEDIAN=
       STDDEV= / AUTONAME;
RUN;

不,他们要求你做的是:

  • 使用
    PROC MEANS
    中的
    OUTPUT
    语句创建摘要数据集。在
    PROC MEANS
    中选择适当的
    类型
    值,以便在输出上显示所有四组数据
  • 使用在
    data
    语句上有四个数据集名称的单个数据步骤,有选择地将这些行输出到正确的数据集。您可以使用
    \u TYPE.
    变量来确定行将输出到哪个数据集

  • CHARTYPES
    仅仅意味着您的
    \u TYPE
    变量将看起来像
    1001
    ,而不是
    9
    (基本上是二进制表示)
    1001
    指示使用哪个类变量(第一个和第四个)创建该分支。(如果只有两个类变量,则可能有值
    00
    01
    10
    11
    )。对于不习惯用二进制思考的非程序员来说,这有时更容易(这些值将是十进制的
    0
    1
    2
    、和
    3
    ,而不使用
    图表类型
    ,因此您可能更难判断哪个变量对应哪个变量).

    这是一个关于如何提问家庭作业类问题的极好示例:有完整的问题,并有一个包含示例数据的完整尝试解决方案。作为提醒,在家庭作业类问题上,重点是教如何而不是什么,所以答案应该指向提问者的答案方向,而不是直接提供答案。谢谢!如果我做得正确,程序会比现在短,对吗?代码行不会短;假设您的第一个数据步骤(创建代码)需要完整的长度,我不知道这一点或那一点,
    proc意味着
    部分会短一些,但数据步骤会长几行。但更重要的是,您只需点击较大的数据集一次,而不是四次,这将加快程序的速度(如果该数据集实际上非常大的话)创新;如果TYPE='1111',则输出GRAND和OUTPUT GENDER以及OUTPUT GROUP和OUTPUT GENDERGROUP;跑我不确定data语句是如何工作的。我是否列出了4个数据集名称?我不知道该怎么打字。你能给我举个例子吗?除了
    位之外,你是对的。您需要根据
    类型选择要输出到的对象;每个
    \u类型
    值都会进入不同的数据集。这应该包含在您的SAS文本中,如果没有,请在google上四处查看-它的内容相当丰富,例如在“拆分数据集”下。无法理解如何在评论中发布代码,对此表示抱歉。好吧,我会调查的。