在SAS PROC SQL中转换语句



我正在运行以下代码,该代码应该为我比较SAS数据集的两列:

PROC SQL;
CREATE TABLE loandata.tv_curve AS
SELECT DISTINCT CONVERT(INT, srp_contract_lifetime) as srp_contract_lifetime, rpa_tv
FROM loandata.sas_f_risk_parameter_cn
WHERE rpa_tv IS NOT NULL
ORDER BY CONVERT(INT, srp_contract_lifetime);
QUIT;

但是,当我运行此代码时,我会收到以下错误消息:

ERROR: Function CONVERT could not be located.
ERROR: Function CONVERT could not be located.
ERROR: The following columns were not found in the contributing tables: INT.

如何正确地将我的srp_contract_lifetime变量转换为int?

CONVERT是TSQL(Microsoft SQL Server)函数,而不是SAS函数。在SAS中,您可以使用inputput进行转换。

PROC SQL;
CREATE TABLE loandata.tv_curve AS
SELECT DISTINCT input(srp_contract_lifetime,12.) as srp_contract_lifetime, rpa_tv
FROM loandata.sas_f_risk_parameter_cn
WHERE rpa_tv IS NOT NULL
ORDER BY input(srp_contract_lifetime,12.);
QUIT;

正如戈登指出的那样,这甚至可能不需要,因为SAS只有数字和特征。仅在input作为字符存储时使用;否则将其删除。

SAS仅具有数字(浮点)和固定长度字符串。

如果您的变量是一个数字,并且仅具有整数值,则没有什么可转换的。如果要删除分数零件,则可以根据要进行转换的方式使用int(),floor(),ciel()或round()功能。

如果您的变量是字符串,则可以使用input()或inputn()函数。

最新更新