sas - 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;
解决方案
该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
您应该阅读的内容。
推荐阅读
- video - ffmpeg 和 libx264 视频无法在视频播放器上播放
- node.js - 在一个应用程序中部署两台 Express 服务器
- node.js - 猫鼬中间件获取将被添加的文档
- c# - Windows 服务正常启动但未执行代码
- machine-learning - 决策树拆分策略
- javascript - Python 和 JavaScript 基本通信
- laravel - 十月CMS | 同一控制器中的动态 importExportConfig
- excel - 比较两个表并在 Excel 中创建一个组合表
- javascript - Javascript:使用 RegEx 读取 android 清单文件中的包
- javascript - 找到打破两个字符串之间匹配的索引