SAS中的IF-THEN语句

SAS中的IF-THEN语句,sas,Sas,我不知道为什么这段代码在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 T

我不知道为什么这段代码在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;

input语句告诉SAS如何读取文本文件,但它没有指定在何处查找tekst。使用内嵌语句所做的操作,如

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;
如果不指定infle语句,则infle datalines;隐式使用,但不提供数据线;语句,则没有输入。我敢打赌你的日志告诉了我一些关于零行读取的信息

顺便问一下,为什么在输入语句中指定Category?我想这只是你的产出


关于infle声明还有很多要说的。例如,您可以选择处理未填写所有数据的行,如trunkover,您应该了解它。

当类别仍将被覆盖时,您为什么要阅读它。然后你们把类别读作numeric,但把文本写进去。你们想用什么数据?要使用输入,您需要内嵌语句或内嵌数据。或者,您的数据集中已经有数据,在这种情况下,请删除INPUT语句并添加SET语句。非常感谢!SET语句就是它所缺少的!您要么有SET语句,要么有INPUT语句,在这个阶段很少同时需要这两个语句。