是否可以使用sas中的proc sql选择数字列作为字符串?
例如,我有这个表(表1):
+------+------+------+--------------+--+
| id_1 | id_2 | id_3 | date | |
+------+------+------+--------------+--+
| 3 | 7 | 3 | 25/06/2017 | |
| 4 | 11 | 9 | 25/06/2020 | |
+------+------+------+--------------+--+
id\ 1、id\ 2和id\ 3可以是数字或字符串。
我想创建一个表(表2),其中这三列的类型应该是string
我写了这个代码:
proc sql;
Create table table_2 as
select date, Convert(varchar(30),a.id_1), Convert(varchar(30),a.id_2), Convert(varchar(30),a.id_3)
from table_1 a
;quit;
但它不起作用
2条答案
按热度按时间zysjyyx41#
最好的解决方案是修复上游流程,以便始终使用一致的类型生成变量。
在sas中,可以使用put()函数将值转换为字符串,只需使用适合变量类型的格式即可。例如,如果您的变量是数字,但它应该是9位数字长的有效前导零,那么您将希望使用z9。格式化以转换它并表示前导零。
如果要在不知道变量类型的情况下将数字或字符变量转换为字符串,可以使用cats()函数。但是,您将无法控制如何将数字转换为字符串。使用length=属性强制sas定义长度为30的变量。
xam8gpfp2#
试试看。。。