If statement 如何在SAS中将if语句用于格式为x.x的变量值

If statement 如何在SAS中将if语句用于格式为x.x的变量值,if-statement,format,sas,If Statement,Format,Sas,我尝试使用一系列if和else语句,用于: if var1 = 1 then var2 = "day 1"; else if var1 = 2 then var2 = "day 2"; 上面的钻头工作正常 然后我有var1的值,分别为1.1、1.2和2.1等。我想要的是,如果var1的值的格式是x.x(一个小数位的值),那么var2=“没有指定日期” 我不确定如何在SAS中编程 非常感谢任何指针。我将使用MOD函数确定var1是否为整数。如果上面的逻辑适用于所有值(即天数与var1相同),那

我尝试使用一系列if和else语句,用于:

if var1 = 1 then var2 = "day 1";

else if var1 = 2 then var2 = "day 2";
上面的钻头工作正常

然后我有
var1
的值,分别为1.1、1.2和2.1等。我想要的是,如果
var1
的值的格式是x.x(一个小数位的值),那么
var2=“没有指定日期”

我不确定如何在SAS中编程


非常感谢任何指针。

我将使用MOD函数确定var1是否为整数。如果上面的逻辑适用于所有值(即天数与var1相同),那么您还可以将If语句简化为一行

data test;
input var1;
length var2 $15;
var2=ifc(mod(var1,1)=0,cats('day ',var1),'No day assigned');
cards;
1
2
1.1
2.1
3
4
;
run;

您的意思是如果该值的格式为4.1,还是说该值不是整数?毕竟,6可以用格式4.1表示为6.0。@joe,我的意思是,如果值不是一个整数,那么如果它是9.01而不是9。我相信
数据线
优于
@基思,这很好地回答了我的问题,谢谢!我以前没有用过mod或ifc函数,所以很好学习!我使用了:如果mod(var1,1)ne 0,那么var2=“没有指定日期”,因为ifc不会处理数据集中的实际值,但会在将来使用!我不认为卡和数据线有什么问题——它们有相同的结果。当然,它们确实显示了你的年龄……Ellie,如果猫实际上不工作,你可能想使用定制的格式,而不是一堆IF语句;ie,而不是
如果var1=1,那么var2='something';else如果var1=2,那么var2='something'
PROC格式更难编写和维护;值myf 1='something'2='something';退出然后var2=put(var1,MYF.)在数据步骤中。只是为了记录在案,我使用卡片不是一件过时的事情(尽管有些人可能会对此提出质疑),更多的是作为一个懒惰的打字员!)