SAS 中停滞的数据步骤

Stalled data step in SAS

我是 SAS 新手,正在尝试 运行 对包含 198 行和 1611 列的数据集执行数据步。我不认为我在数据步骤中做了任何特别详细的事情,但它永远不会完成。如果有人能指出 if/where 我的代码中存在问题,我将不胜感激。谢谢!

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;

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

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