【问题标题】:SAS - What is a good way to check if any of the variables in a list is missingSAS - 检查列表中是否缺少任何变量的好方法是什么
【发布时间】:2014-12-04 13:44:46
【问题描述】:

我有一些数据集,有时我需要选择列表中没有任何变量缺失的观察结果。

即我必须这样做。

Where E1 NE . and E2 NE . and E3 NE .

或者我可以像这样更容易地做到这一点:

Where E1+E2+E3 NE .

但是 SAS 有没有办法做类似的事情:

Where not missing(E1 - E3)

如果我这样做,它不起作用

where sum(of E1-E3) NE .

因为那等价于

Where E1 NE . or E2 NE . or E3 NE .

但我需要“and”而不是“or”。


我还可以遍历数据集中的这些变量并为选择构建一个变量,例如:

array E E1-E3;
misind = 0;
do i=1 to dim(E);
    if E(i) = . then misind = 1;
end;

但这也不是那么简单!

【问题讨论】:

    标签: sas


    【解决方案1】:

    我认为您可以使用函数nmisscmiss 来检查缺少值的列的确切数量。

    用于数字列。 e1-e3 中没有缺少任何列。

    if nmiss(of e1-e3) = 0
    

    用于数字/字符混合列。 e1-e3 中没有缺少任何列。

    if cmiss(of e1-e3) = 0
    

    【讨论】:

    • 我也是这样做的。
    • nmiss 或 cmiss 函数在 Where 子句中对我不起作用。我只能在 x=nmiss(of e1-e3) 这样的数据步骤中使用它们。我做错了吗?
    • @Pekka 对不起,我的错。这里你必须使用if
    • 好的。它仍然是一个很好的解决方案,也是我一直在寻找的那种衬垫。不过,我想知道为什么当 SAS 可以在所有程序中使用时,它为什么不能在“哪里”工作。例如,我在 Proc Means 中一直需要这个。
    猜你喜欢
    • 2017-08-23
    • 1970-01-01
    • 2015-03-06
    • 2017-04-03
    • 2019-10-23
    • 2010-11-30
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    相关资源
    最近更新 更多