子集的 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)
我创建了一个简单的 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)