我尝试使用 PROC SQL
对数据进行子集化,但当我使用变量 TNM_CLIN_STAGE_GROUP
时,出现错误。下面的例子:
PROC SQL;
create table subset as
select ncdb.*
from ncdb
where YEAR_OF_DIAGNOSIS>2002
AND SEX = 2
AND LATERALITY IN (1,2,3)
AND HISTOLOGY = 8500
AND TNM_CLIN_STAGE_GROUP = 1;
quit;
ERROR: Expression using equals (=) has components that are of different data types.
当我运行相同的代码,但取出变量 TNM_CLIN_STAGE_GROUP
时,代码可以正常工作。有人知道该变量名称有什么问题吗?
最佳答案
该错误表明类型不同。 SAS只有两种类型,数字和字符,所以变量很可能是字符;验证具体值,但一般来说它可能需要引号(单引号或双引号,在这种情况下并不重要)。
如果它不是硬编码值,而是另一个变量的值,您可以使用 PUT
转换为字符或 INPUT
转换为数字,以更简单的为准根据数据进行转换。
数据步骤中的 SAS 会很乐意为您转换此值,但在 SQL 和类似 SQL(WHERE
语句)中,它不会自动将字符转换为数字,反之亦然;您必须提供正确的类型。
关于sql - 过程 SQL 错误 : "ERROR: Expression using equals (=) has components that are of different data types.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27389333/