【问题标题】:Dropping observations in SAS based on length根据长度在 SAS 中删除观察值
【发布时间】:2014-06-18 02:47:11
【问题描述】:

我有一个试图从中创建表的数据集,但我需要过滤掉不属于这些表的观察结果。我仍在学习 SAS,所以我不知道如何使用条件删除观察结果。

基本上,我想删除 ID 值不是四位数(就长度而言)的观察值。这可能吗?

提前致谢。

【问题讨论】:

    标签: sas variable-length


    【解决方案1】:

    假设您的 ID 是字符,并且您不考虑空白数字:

    if lengthn(id) ~= 4 then delete;

    如果您的 ID 是数字:

    if 1000 <= id <= 9999 then output;

    【讨论】:

    • 效果很好——不知道为什么我没想到,谢谢!
    • 第二个可以重写where id between 1000 and 9999;。 Where 通常比 if 更有效。
    • 小心length() 函数。对于这个特定的示例来说没问题,但通常使用lengthn() 函数是更好的做法。不同之处在于length() 将返回空字符串的长度 1,而晦涩的 lengthn() 将返回通常预期的值 0。一个大的 WTF 会出现在以这种方式设计它的人身上......
    • 谢谢罗伯特,这是一个非常好的观点。我会编辑答案。
    【解决方案2】:

    如果id 是字符:

    where length(id) = 4;
    

    如果id 是数字:

    where id between 1000 and 9999;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-17
      • 1970-01-01
      • 2019-01-29
      • 2013-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多