SAS中基于长度的丢包观测

SAS中基于长度的丢包观测,sas,variable-length,Sas,Variable Length,我有一个试图创建表的数据集,但我需要过滤掉不属于这些表的观察值。我仍在学习SAS,因此我不知道如何使用条件放弃观察 基本上,我想删除ID值不是四位数(长度方面)的观察值。这可能吗 先行。 < P>假设你的ID是字符,并且不考虑空白数字: 如果lengthn(id)~=4,则删除 如果您的ID是数字: where id between 1000 and 9999; 1000 假设您的ID是字符,并且不考虑空白数字: 如果lengthn(id)~=4,则删除 如果您的ID是数字: where

我有一个试图创建表的数据集,但我需要过滤掉不属于这些表的观察值。我仍在学习SAS,因此我不知道如何使用条件放弃观察

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


先行。

< P>假设你的ID是字符,并且不考虑空白数字:

如果lengthn(id)~=4,则删除

如果您的ID是数字:

where id between 1000 and 9999;

<代码> 1000 假设您的ID是字符,并且不考虑空白数字:

如果lengthn(id)~=4,则删除

如果您的ID是数字:

where id between 1000 and 9999;

如果1000如果
id
是字符:

where length(id) = 4;
如果
id
是数字:

where id between 1000 and 9999;

如果
id
是字符:

where length(id) = 4;
如果
id
是数字:

where id between 1000 and 9999;

那很好用-不知道为什么我没有想到,谢谢!第二个可以重写
,其中id介于1000和9999之间<代码>其中
通常比
if
更有效。使用
length()
函数时要小心。对于这个特定的示例,这是可以的,但是通常使用
lengthn()
函数是更好的做法。区别在于
length()
将返回空字符串的长度1,而模糊的
lengthn()
将返回通常期望的值0。一个大的WTF会送给这样设计它的人…谢谢罗伯特,这是一个非常好的观点。我将编辑答案。这非常有效-不知道为什么我没有想到这一点,谢谢!第二个可以重写
,其中id介于1000和9999之间<代码>其中
通常比
if
更有效。使用
length()
函数时要小心。对于这个特定的示例,这是可以的,但是通常使用
lengthn()
函数是更好的做法。区别在于
length()
将返回空字符串的长度1,而模糊的
lengthn()
将返回通常期望的值0。一个大的WTF会送给这样设计它的人…谢谢罗伯特,这是一个非常好的观点。我将编辑答案。