繁体   English   中英

SAS 中的 IF THEN 语句

[英]IF THEN statement in 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 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。 您使用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 语句infile datalines; 是隐式使用的,但由于您没有提供datalines; 声明,没有输入。 我敢打赌,您的日志会说明有关读取零行的信息。

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

关于infile语句还有很多要说的。 例如,您可以选择处理未填充所有数据的行,例如trunkover ,您应该阅读一下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM