我正在尝试使用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
时,代码可以运行。任何人都知道该变量名称的问题是什么?
答案 0 :(得分:3)
该错误表示类型不同。 SAS只有两种类型,数字和字符,所以变量可能是字符;验证具体的值,但一般来说它可能需要引用(单或双,在这种情况下并不重要)。
如果它不是硬编码值,而是另一个变量的值,您可以使用PUT
转换为字符或INPUT
转换为数字,根据数据更容易转换
数据步骤中的SAS会很乐意为您转换,但在SQL和类SQL(WHERE
语句)中,它不会自动将字符转换为数字,反之亦然;你必须提供正确的类型。
答案 1 :(得分:0)
在做相等之前,请检查您要比较的内容。
检查你的ncbd表的结构,特别是TNM_CLIN_STAGE_GROUP的字段类型
你会看到真正的类型,如果它是一个varchar,你需要使用@JChao建议的单引号作为评论。
如果是另一种类型,那么你需要调整比较器或者如果你没有选择就使用演员。