2013-02-27 60 views
0

我试图使用一系列if和else语句的变量值,为:如何在SAS使用if语句的格式x.x中

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 = "No day assigned"

我不确定如何在SAS中编程?

任何指针将不胜感激。

+0

你的意思是如果值的格式为4.1,或者你的意思是如果该值不是一个整数?毕竟,6可以用格式4.1表示为6.0。 – Joe 2013-02-27 16:21:50

+0

@joe,我的意思是,如果值不是一个整数,所以如果它是9.01而不是9。 – Ellie 2013-02-27 19:28:31

回答

1

我会使用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; 
+0

我相信'DATALINES'通过'CARDS'传递。 [*退伍军人SAS用户可能熟悉此关键字的原始名称:CARDS。 CARDS是数据处理早期的一种倒退,通过物理打孔卡将例程和数据输入到计算机中。*](http://www2.sas.com/proceedings/sugi31/228-31.pdf) – JDB 2013-02-27 17:44:47

+0

@keith,这很好地回答了我的问题,谢谢!在学好之前,我还没有使用mod或ifc函数!我使用了:如果mod(var1,1)ne 0,那么var2 =“No day assigned”,因为ifc不适用于数据集中的实际值,但将在未来使用! – Ellie 2013-02-27 19:27:01

+0

我不认为CARDS和DATALINES有什么不妥 - 它们有相同的结果。他们确实显示你的年龄,当然... – Joe 2013-02-27 19:29:44