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

时间:2014-08-04 20:35:51

标签: sas

我想知道是否有办法对用户编写格式的变量的格式化值执行操作。例如,我想将变量food1与变量food2进行比较(两者都有用户编写的格式)。我想做这样的事情:

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

这很容易,但如果'ice cream'和'food'是用户编写的格式值,我不确定比较这些变量的正确方法。让我们说'冰淇淋'实际上是'A'而''馅饼'实际上是'B'。有没有办法在不删除格式或创建新变量或使用实际值的情况下进行此比较?

2 个答案:

答案 0 :(得分:2)

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

if vvalue(food1)='ice cream' and vvalue(food2)='pie' then ...

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

VVALUEX类似,但为变量名称设置了一个字符参数(因此,如果您不知道要评估的变量名称,那么这是正确的方法)。

答案 1 :(得分:1)

这可以通过put()功能完成。替换" format1"和" format2"下面带有用户编写格式的名称。

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