0

我是一名 SAS 新手用户,正在尝试对具有 198 行和 1611 列的数据集运行数据步骤。我认为我在数据步骤中没有做任何特别精细的事情,但它永远不会完成。如果有人能指出我的代码中是否/哪里有问题,我将不胜感激。谢谢!

DATA merged2;
    set merged;
    Q1_rec_activity=.;
        IF (.< PA <150) THEN Q1_rec_activity=0;
        IF (. < PA >=150) THEN Q1_rec_activity=1;
    IF (PA_Q3 == 8) THEN PA_Q3=0;
    IF (PA_Q3 == 9) THEN PA_Q3=9999;
    PA_calc_activity=.;
        IF (. < PA_Q3 < 9999) and (. < PA_Q4) THEN PA_calc_activity=PA_Q4*PA_Q3;
        IF (PA_Q3==9999) THEN PA_calc_activity=9999;
    LABEL AGE='Age'
            DEM_1='Birth Year'
            DEM_2='Gender'
            DEM_3='Marial status'
            DEM_4='Hispanic/Latino'
            DEM_5='Race'
            DEM_7='Educational attainment'
            DEM_8='Employment status'
            DEM_10='Work schedule'
            DEM_11='Coworkers'
            DEM_12='Health insurance'
            DEM_14='Income'
            MODULE='Module'
            TobScreen_1='Qualtrics 1 smoke cigarettes'
            TOB_Q1='CHART tobacco module smoke cigarettes'
            TobScreen_3='Qualtrics 1 smoke cigars, cigarillos, or filtered cigars'
            TOB_Q3='CHART tobacco module smoke cigars, cigarillos, or filtered cigars'
            Exercise_Time='Qualtrics 1 minutes of moderate activity'
            PA_Q4='CHART PA module minutes of moderate activity'

    RUN;
4

1 回答 1

2

因为您在标签语句的末尾缺少分号,所以 SAS 将RUN其视为标签语句的一部分。因此,它永远不会遇到步骤边界(通常是 RUN、QUIT、DATA 或 PROC 语句),因此永远不会真正编译和运行您的代码。

正如 Reeza 在评论中指出的那样,您的代码中也存在一些错误。 ==在 SAS 中不正确;单个等号适用于相等和赋值。如果您喜欢使用两个不同的符号,您可以使用eqfor 相等(尽管您仍然需要=在某些选项和参数上下文中使用)。

于 2015-11-18T17:50:29.610 回答