Sas 基于以值结尾的值在何处条件上过滤?

Sas 基于以值结尾的值在何处条件上过滤?,sas,Sas,熟悉使用like函数过滤字符值,是否可以对数值执行相同操作 Col A Col B 1 3214.22 2 4432.11 3 11.65 4 342.98 例如,以下内容适用于字符值: data test; set table (Where = (Col B like '%.22)); run; 您可以执行计算以确定比较所需的小数部分 data want; set have; where round ( ab

熟悉使用like函数过滤字符值,是否可以对数值执行相同操作

Col A     Col B
1         3214.22 
2         4432.11
3         11.65
4         342.98
例如,以下内容适用于字符值:

data test;
set table (Where = (Col B like '%.22));
run;

您可以执行计算以确定比较所需的小数部分

data want;
  set have;
  where round ( abs(b) - int(abs(b)), 1e-8 ) = 0.22;  /* 1e-6 is rounding level, used here as a fuzz factor */
run;
或者,根据@whymath,比较函数(如
CATS
PUTN
)返回的数值的字符表示形式

where cats(b) like '%.22'; /* character value being compared depends on BESTw. chosen by CATS */
where put(b,best15.2) like '%.22';  /* match fractional parts >= .215 to < .225 */
猫(b)喜欢“%.22”;/*要比较的字符值取决于BESTw。猫选*/
其中放置(b,best15.2)像“%.22”;/*匹配大于等于.215到小于.225的小数部分*/

您可以执行计算以确定比较所需的小数部分

data want;
  set have;
  where round ( abs(b) - int(abs(b)), 1e-8 ) = 0.22;  /* 1e-6 is rounding level, used here as a fuzz factor */
run;
或者,根据@whymath,比较函数(如
CATS
PUTN
)返回的数值的字符表示形式

where cats(b) like '%.22'; /* character value being compared depends on BESTw. chosen by CATS */
where put(b,best15.2) like '%.22';  /* match fractional parts >= .215 to < .225 */
猫(b)喜欢“%.22”;/*要比较的字符值取决于BESTw。猫选*/
其中放置(b,best15.2)像“%.22”;/*匹配大于等于.215到小于.225的小数部分*/

您可以使用
cat()
函数将
列B
转换为其字符类型您可以使用
cat())
列B
转换为字符类型的函数@Richard是否有将字符列B重新格式化为数字列的函数?如果要将字符更改为数字,则需要转换值,而不是更改其格式。在SAS中,格式只是关于如何显示值的说明,而不是更改存储的值。函数的作用是将字符串转换为数字。通过该函数,您可以使用信息而不是格式。正常的数字信息
32.
可用于将字符串转换为数字。@Richard是否有将字符列b重新格式化为数字列的函数?如果要将字符更改为数字,则需要转换值,而不是更改其格式。在SAS中,格式只是关于如何显示值的说明,而不是更改存储的值。函数的作用是将字符串转换为数字。通过该函数,您可以使用信息而不是格式。正常的数字信息
32.
可用于将字符串转换为数字。