【发布时间】:2020-10-27 22:21:31
【问题描述】:
我在 SAS EG 工作,我正在尝试将字符格式的列转换为数字格式,与它们以字符格式显示的完全一样。这些数字的长度各不相同,有些数字有一个或两个前导零。
如果我采用一种方式,它会去掉所有前导零。我尝试的另一种方法是,它将前导零添加到它与列中最长的数字一样长的程度,例如,一个前导零的 9 位数字现在有四个前导零,因为列中的最长数字是 12 位. (我希望这个描述有意义)。
我在 SAS EG 工作。当我运行 proc 内容时,它告诉我我现有的变量是一个长度为 26 的字符变量。'format' 和 'informat' 都是空白的。
我需要对其进行转换,以便新列是长度为 8 和“F12”的数字变量。对于“格式”和“BEST12”。对于“信息”,因为我打算用它来匹配两个数据集。
我在“常规”SAS 中创建了以下测试数据集,但我不确定是否完全重现了我在 SAS EG 中处理的问题:
data have;
input mrn $1-12;
cards;
118283586928
003875807
038087875
0385709873
0038576830
;
run;
如您所见,我有一个 12 位长的数字(没有前导零);两个是 9 位数字(带有一个或两个前导零);和两个是 10 位数字(带有一个或两个前导零)。
任何帮助将不胜感激。
谢谢
【问题讨论】:
-
你说“我打算用它(char值转换为数值)来匹配两个数据集”。匹配数值时不考虑数字格式,因此您可能可以摆脱这个兔子洞。
-
在带有字符版本值的表中,前导零是否重要?那就是
'00012'和'12'意味着两种不同的情况? -
前导零对数字没有意义,它们只是为了显示,根本问题是什么?您最初是从哪里获得这些数据的?
标签: sas type-conversion leading-zero