我有以下表格的数据
ID BookingDate Releasedate
1 1/1/11 1/3/14
2 3/3/12 1/4/17
.
.
.
(ID是字符变量)
数据以这种方式继续。
我要做的是构建一个循环如下:
If id(i) = id(i+1) AND
BookingDate(i) = Bookingdate(i+1) AND
Releasedate(i) NE ReleaseDate(i+1)
Then
Releasedate(i) = Max(ReleaseDate(i), Releasedate(i+1))
Else
Releasedate(i) = Releasedate(i)
这将是i = 1到(行数)
注意,我的语法是伪造的。
我读过的关于数组的所有内容看起来都像逐行一样在列上运行。
谢谢!
答案 0 :(得分:1)
使用RETAIN和LAG查找以前的值。 没有机会进行测试,但相当肯定这会有效。你可以简化MAX条件。
Data want;
Set have;
Retain Latest_RDate;
Prev_id = lag(Id);
Prev_bdate = lag(bookingdate);
Prev_rdate = lag(ReleaseDate);
If Id = (prev_Id + 1) and bookingDate = (prev_bdate + 1) and
ReleaseDate ne (Prev_RDate + 1) then Latest_Rdate = max(releasedate, prev_Rdate, Latest_Rdate);
Else latest_Rdate = RealeaseDate;
Run;