将缺少数据线的数据线编码为未知,而不是将缺少 [closed]

Code missing datalines as unknown instead of missing [closed]

提问人:angel 提问时间:4/29/2023 最后编辑:vimuthangel 更新时间:5/1/2023 访问量:67

问:


编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将有助于其他人回答这个问题。

7个月前关闭。

enter image description here

我正在尝试将缺失的频率计数重新编码为未知,并且缺少 0 个并将它们放在未知类别中。我的代码不会产生错误,但不会将它们重新编码为未知

我尝试使用 if/then 语句进行重新分类

SAS SAS-宏 过程 频率分析

评论

0赞 Tom 4/29/2023
单个期间不会被视为缺失值。SAS 将仅包含空格的字符值视为缺失值。你确定你的变量是字符吗?如果它们是数字,则不能将字符串存储到其中。
0赞 starball 5/1/2023
@vimuth再次提醒人们,对不恰当地使用图像而不是内联图像的问题进行投票。

答:

2赞 Richard 4/29/2023 #1

使用该函数检测缺失值。MISSING()

  if missing(gender) then gender='UNKNOWN';

不过,这种方法有问题。如果重新编码值长于变量,则重新编码值将被截断。

如果 gender 为 $1,则赋值将生成 gender = 'U'。gender="UNKNOWN;

更好的方法是使用自定义格式将缺失值映射到指标。

proc format;
  value $missingc ' '='UNKNOWN';
  value  missingn  . ='UNKNOWN';
run;

proc freq data=have;
  table gender race ethnicity resident_or_staff age / missing;
  format gender race ethnicity resident_or_staff $missingC.;
  format age missingN.;
run;