这是我拥有的表格,如果人员相同,我需要选择,代码应该是“CA”,街道线应该更改为下一列。它是WC-WC-EC,所以我需要选择EC列。所以我把星星放在他们应该选择的列上。
person code date street_line;
2 CA 11JAN10 wc ;
2 CA 10JAN10 WC;
**2 CA 10JAN10 EC** ;
2 MA 3jan10 TM;
3 CA 20FEB07 EC ;
3 CA 20FEB07 EC;
**3 CA 24MAR09 WP;**
4 CA 2JUN08 WP;
4 CA 12JUN08 WP;
答案 0 :(得分:0)
使用FIRST和NOTSORTED,您可以识别变量的变化。在这种情况下,我们会在未发生人员或代码更改(first.street_line
)时识别street_line(not first.code
)的更改。变化总是向下传播,因此人员的变化也会是代码和street_line的变化,因此需要检查。
data want;
set have;
by person code street_line notsorted;
if first.street_line and not first.code then flag=1;
run;
答案 1 :(得分:0)
您可以使用lag()
函数从上一行获取值。
data want ; set have ; by person ; lag_Street = lag(street_line) ; if not first.person and code = 'CA' and street_line ^= lag_Street then output ; run ;
如果它是person
的第一条记录,则无法确定street
的值是否已更改,因为之前的值没有person
。
因此,not first.person
从person
开始仅选择第二条记录,说明code = 'CA'
必须为true,street_line ^= lag_Street
检查street_line
是否为{{1}} } value与前一行不同。