【发布时间】:2015-11-18 17:26:54
【问题描述】:
我是一名 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;
【问题讨论】:
-
您在 Label 语句的末尾缺少一个分号。此外,SAS 中的相等测试是单个 = 而不是多个 == (PA_Q3==9999) 应该是 PA_Q3=9999。
-
您还应该考虑将一些 if 更改为 if/else if,因为条件本质上是 if/if then 条件。