sas - 根据以值结尾的值过滤 where 条件?
问题描述
熟悉使用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
or 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 */
推荐阅读
- java - 是什么导致 java.lang.NoClassDefFoundError 随机发生?
- python - webbrowser 打开 URLs N 次获取 AVR 时间
- security - 我们可以覆盖 JSON.stringify 来获取 XSS
- facebook - 缺乏对 Facebook API 帖子的权限
- setx - 使用 /M 时 SETX 未设置系统变量
- python - 在 Pandas 中使用 astype 不会产生预期的结果
- python - 翻译'〜/ path'是os.path.abspath的错误吗?
- python - 如何使用 Django 将存储为 JSON 的十进制数字转换为十进制?
- python-3.x - 从字典中删除重复值
- javascript - Discord.JS Bot 请求 npm 获取 json 元素