首页 > 解决方案 > SAS 中的 IF THEN 语句

问题描述

我不确定为什么这段代码在 SAS 中不起作用。有人可以帮忙吗?

DATA WORK.POLLUTION;
    INPUT State $ County $ City $ Month $ Year $ O3MAX $ Category;
IF O3MAX < 0.054 THEN Category = "Good";
    ELSE IF O3MAX < 0.070 THEN Category = "Moderate";
    ELSE IF O3MAX < 0.085 THEN Category = "UnhealthySensitive";
    ELSE IF O3MAX < 0.105 THEN Category = "Unhealthy";
    ELSE IF O3MAX < 0.200 THEN Category = "VeryUnhealthy";
    ELSE Category = "Dangerous";
RUN;

PROC PRINT DATA = WORK.POLLUTION;
TITLE= "O3";
RUN;

标签: sas

解决方案


input语句告诉 SAS 如何从文本文件中读取,但没有指定在哪里查找 tekst。你用一个infile语句做的,比如在

DATA WORK.POLLUTION;
    INFILE "C:\myFolder\myInput.txt";
    INPUT State $ County $ City $ Month $ Year $ O3MAX $ Category;
    ...;
run;

或者,您可以通过给它一个名称并引用它来预先提供有关文件的信息:

filename MY_TEXT "C:\myFolder\myInput.txt";

DATA WORK.POLLUTION;
    INFILE MY_TEXT;
    INPUT State $ County $ City $ Month $ Year $ O3MAX $ Category;
    ...;
run;

一个特殊的文件名是datalines,它指的是内联数据,在datalines语句和分号之间

DATA WORK.POLLUTION;
    INFILE datalines;
    INPUT State $ County $ City $ Month $ Year $ O3MAX $ Category;
    ...;
datalines; 
<your data comes here>
;
run;

如果您不指定infile datalines;隐式使用 INFILE 语句,但由于您不提供datalines;语句,则没有输入。我敢打赌,您的日志会告诉您有关读取零行的信息。

顺便问一下,为什么要在input语句中指定类别?我想它只在你的输出中。

关于声明还有很多话要说infile。例如,您可以选择处理未填写所有数据的行,例如trunkover您应该阅读的内容。


推荐阅读