我是初级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;
答案 0 :(得分:2)
因为您在标签声明的末尾缺少分号,SAS会将RUN
视为标签声明的一部分。因此,它永远不会遇到步骤边界(通常是RUN,QUIT,DATA或PROC语句),因此从不实际编译和运行代码。
正如Reeza在评论中指出的那样,您的代码中也存在一些错误。 ==
在SAS中不正确;单一的等号适用于平等和分配。如果您希望使用两个不同的符号,则可以使用eq
进行相等(尽管在某些选项和参数上下文中仍需要使用=
)。