If statement SAS条件IF-THEN语句不工作

If statement SAS条件IF-THEN语句不工作,if-statement,sas,If Statement,Sas,我是SAS的初学者,目前正在学习Coursera课程之一。讲座中给出的代码不起作用,尽管我没有看到错误。代码如下: PROC IMPORT DATAFILE ='/home/student123/my_courses/nesarc_pds.csv' OUT = data REPLACE; LABEL TAB12MDX ="Tobacco Dependance Past 12 Months" CHECK321 ="Smoked Cigarettes in Past 12 Month

我是SAS的初学者,目前正在学习Coursera课程之一。讲座中给出的代码不起作用,尽管我没有看到错误。代码如下:

PROC IMPORT DATAFILE ='/home/student123/my_courses/nesarc_pds.csv' OUT = data  REPLACE;

LABEL TAB12MDX ="Tobacco Dependance Past 12 Months"
      CHECK321 ="Smoked Cigarettes in Past 12 Months"
      S3AQ3B1 ="Usual Smoking Frequency"
      S3AQ3C1 ="Usual Smoking Quantity";

IF S3AQ3B1=9 THEN S3AQ3B1=.;
IF S3AQ3C1=99 THEN S3AQ3C1=.;
IF CHECK321=1;
IF AGE LE 25;
PROC SORT; BY IDNUM;
PROC FREQ; TABLES TAB12MDX CHECK321 S3AQ3B1 S3AQ3C1 AGE;
RUN;
我在日志中看到的错误是:

80         IF S3AQ3B1=9 THEN S3AQ3B1=MISSING;
        __
        180
81         IF CHECK321=1;
        __
        180
82         IF AGE LE 25;
        __
        180
ERROR 180-322: Statement is not valid or it is used out of proper order.
我使用SAS Studio,但我不知道这有什么关系


有人知道错误在哪里吗?

< P>你不能在无处运行if语句或标签语句。它们必须是数据步骤(或支持这些语句的过程步骤的pat)的一部分。你需要一个数据步骤。(注意,为数据集指定比
数据
更有意义的名称也是一个好主意)

  • 您需要数据步骤或过程来修改数据
  • 您应该使用DATA=将进程指向正确的数据输入
  • 您只需要运行一次,但它有助于描述您的代码

    PROC IMPORT DATAFILE ='/home/student123/my_courses/nesarc_pds.csv' OUT = data  REPLACE;
    RUN;  /*3*/
    
    Data yourData; /*1*/
    set data;
    
    LABEL TAB12MDX ="Tobacco Dependance Past 12 Months"
      CHECK321 ="Smoked Cigarettes in Past 12 Months"
      S3AQ3B1 ="Usual Smoking Frequency"
      S3AQ3C1 ="Usual Smoking Quantity";
    
    IF S3AQ3B1=9 THEN S3AQ3B1=.;
    IF S3AQ3C1=99 THEN S3AQ3C1=.;
    IF CHECK321=1;
    IF AGE LE 25;
    
    run;  /*3*/
    
    PROC SORT data=yourData; /*2*/
    BY IDNUM;
    RUN; /*3*/
    
    PROC FREQ data=yourData; /*2*/
    TABLES TAB12MDX CHECK321 S3AQ3B1 S3AQ3C1 AGE;
    RUN;
    

  • 您有一系列数据步骤语句,但没有任何实际的数据步骤。
    PROC IMPORT DATAFILE ='/home/student123/my_courses/nesarc_pds.csv' OUT = data  REPLACE;
    RUN;  /*3*/
    
    Data yourData; /*1*/
    set data;
    
    LABEL TAB12MDX ="Tobacco Dependance Past 12 Months"
      CHECK321 ="Smoked Cigarettes in Past 12 Months"
      S3AQ3B1 ="Usual Smoking Frequency"
      S3AQ3C1 ="Usual Smoking Quantity";
    
    IF S3AQ3B1=9 THEN S3AQ3B1=.;
    IF S3AQ3C1=99 THEN S3AQ3C1=.;
    IF CHECK321=1;
    IF AGE LE 25;
    
    run;  /*3*/
    
    PROC SORT data=yourData; /*2*/
    BY IDNUM;
    RUN; /*3*/
    
    PROC FREQ data=yourData; /*2*/
    TABLES TAB12MDX CHECK321 S3AQ3B1 S3AQ3C1 AGE;
    RUN;