子集的 SAS 大小与预期频率不匹配

SAS size of subset not matching expected frequency

我创建了一个简单的 sas 数据集子集,其条件为 durrel_cyc = 1。这将创建一组 376 个观测值。但是,当我运行 频率为 vdurrel_cyc 时,应该选择 536 个(未加权的)值为 1 的观测值。

我不确定如何创建一个工作示例,因为它显然不合逻辑,而且我以前从未遇到过这种情况 - 我已经使用 SAS 一段时间了。

我真的不知道该怎么做,这让我发疯。是否有任何命令可能导致此问题?

我尝试了以下方法:

data a b ;
set look ;
if durrel_cyc = 1 then output a ; else output b ;
run ;

proc freq data=b ;
tables durrel_cyc / missing ;
run ;

为什么数据集 B 中仍然有值 1?

你没有说 durrel_cyc 是如何创建的,所以一种可能是它是数字表示错误的受害者(互联网上有很多关于这个的文章)。

尝试输入 if round(durrel_cyc) = 1 then output a ; else output b ; 看看是否能解决问题。

如果这不起作用,那么只需检查 durrel_cyc 没有与之关联的自定义格式(proc freq 将显示格式化值,因此如果有显示的自定义格式与 1 不同的数字,proc freq 将显示为 1)