sas - 缺失的数值转换为字符
问题描述
我有一个数据集,它来自一个同时具有数值和字符值的变量。我必须转换那些有数字的并将它们用于计算,然后将它们返回到字符,以便我可以将它们附加回字符。在附加它们之后,其中一些缺少指定为 (.) 的值,我想使用另一个名为 status 的变量来覆盖它,该变量具有 Yes 或 No 作为值。
我现在的挑战是如何识别那些拥有 . 作为缺失值并用状态覆盖它们。
我努力了
proc sql;
create table Track as
select *,
case when acct in (' ','.') then status
else acct
from Acct_table;
quit;
也试过
case when acct is null then status
但上述任何一项似乎都不起作用。
解决方案
句点很可能不在字符串的第一个字符中。如果你做了
acct = put(acct_num,10.);
然后字符变量将有 9 个空格,然后是句点。
如果你这样做了:
acct = acct_num;
然后 SAS 将使用 BEST12 进行隐式转换。格式,因此将有 11 个前导空格。
所以改变你的测试。
case when left(acct) in (' ','.') then
推荐阅读
- excel - 检测文本相同但文本格式不同的单元格之间的差异
- twilio - 是否可以从 Twilio 接收流式音频数据?
- swift - 将处理程序传递给 Swift 中的 UICollectionView 单元格
- r - 逻辑索引中 '=' 和 '==' 的区别
- linux-device-driver - 来自 PL 的 zynq linux IRQ
- html - (index):13 Uncaught ReferenceError: LoginUser is not defined at HTMLButtonElement.onclick
- php - 将1个数组的值合并到另一个键相同的数组
- python - Pandas groupby 函数返回 NaN 值
- reactjs - 本地主机 3000!标签不关闭!反应
- php - Woocommerce 循环中每个订单项目的总计数