【发布时间】:2014-06-18 02:47:11
【问题描述】:
我有一个试图从中创建表的数据集,但我需要过滤掉不属于这些表的观察结果。我仍在学习 SAS,所以我不知道如何使用条件删除观察结果。
基本上,我想删除 ID 值不是四位数(就长度而言)的观察值。这可能吗?
提前致谢。
【问题讨论】:
标签: sas variable-length
我有一个试图从中创建表的数据集,但我需要过滤掉不属于这些表的观察结果。我仍在学习 SAS,所以我不知道如何使用条件删除观察结果。
基本上,我想删除 ID 值不是四位数(就长度而言)的观察值。这可能吗?
提前致谢。
【问题讨论】:
标签: sas variable-length
假设您的 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 会出现在以这种方式设计它的人身上......
如果id 是字符:
where length(id) = 4;
如果id 是数字:
where id between 1000 and 9999;
【讨论】: