我正在尝试在我的数据集中获得一个名为“Zone”的新列。我在 SAS 企业编码并且对编码比较陌生。我不断得到
错误 388-185:需要一个算术运算符
这是我的代码:
data talkmax.location_data_talkmax;
set talkmax.location_data_talkmax;
if GIS_PROVINCE IS MISSING then Zone = .;
else if GIS_PROVINCE = "GAUTENG" then Zone = 100%;
else if GIS_PROVINCE = "FREE STATE" then Zone = "100%";
run;
我确实尝试删除 = 符号并将其替换为 GE。如果有人可以帮助我解决这个问题,我将不胜感激。
Zone
赋值是混合的,应该是值为“100%”的字符变量还是值为1.00的数值变量,格式为PERCENT.
我会假设数字
IS MISSING
是一个运算符,仅在 WHERE
表达式的一部分时适用。
使用
MISSING()
函数检测缺失值作为 IF
表达式的一部分。
if missing(GIS_PROVINCE) then Zone = .;
else if GIS_PROVINCE = "GAUTENG" then Zone = 1; /* 100% is not numeric expression */
else if GIS_PROVINCE = "FREE STATE" then Zone = 1; /* changed to number */
format zone PERCENT.;
值得一提的是,如果重写为
IF/THEN/ELSE
语句,围绕公共变量的 SELECT
模式会变得更加清晰。也更容易发现拼写错误。
select (GIS_PROVINCE);
when ('GAUTENG' ) then Zone = 1;
when ('FREE STATE') then Zone = 1;
when (' ' ) then Zone = .;
otherwise /* Hands off my zones */ ;
end;
一组值的模式化映射也可以通过使用自定义格式或自定义信息来执行。我会把它留到另一个下雨天。