SAS中的用户写入格式和比较/逻辑运算符

SAS中的用户写入格式和比较/逻辑运算符,sas,Sas,我想知道是否有一种方法可以使用用户编写的格式对变量的格式化值执行操作。例如,我想比较变量food1和变量food2(两者都有用户编写的格式)。我想这样做: if food1='ice cream' and food2='pie' then ...; 这很简单,但如果“冰激凌”和“食物”是用户编写的格式值,我不确定比较这些变量的正确方法。假设“冰淇淋”实际上是“A”,而“馅饼”实际上是“B”。有没有一种方法可以在不删除格式、不创建新变量或不使用实际值的情况下进行比较 这可以通过put()函数来完

我想知道是否有一种方法可以使用用户编写的格式对变量的格式化值执行操作。例如,我想比较变量
food1
和变量
food2
(两者都有用户编写的格式)。我想这样做:

if food1='ice cream' and food2='pie' then ...;

这很简单,但如果“冰激凌”和“食物”是用户编写的格式值,我不确定比较这些变量的正确方法。假设“冰淇淋”实际上是“A”,而“馅饼”实际上是“B”。有没有一种方法可以在不删除格式、不创建新变量或不使用实际值的情况下进行比较

这可以通过
put()
函数来完成。将下面的“format1”和“format2”替换为用户编写格式的名称


如果您正在使用数据步骤(而不是
PROC SQL
或类似步骤),则可以使用:

这将访问当前定义的格式化值(基于当前为变量定义的格式,该格式可能在数据步骤中更改!)。这不需要知道该格式是什么

VVALUEX
类似,但变量名采用字符参数(因此,如果您不知道要计算的变量名,这是正确的方法)

if put(food1,format1.) ='ice cream' and put(food2,format2.) ='pie' then ...;
if vvalue(food1)='ice cream' and vvalue(food2)='pie' then ...