我的数据如下图所示。我有他们购买的日期,客户名称和不同类别的水果。
我想创建一个新列,计算出已售出多少&#34;双倍出售&#34;发生了。例如,第一次与客户A的互动是在1/15,如果第二次互动是在第一次互动的<7>天内和出售水果,我希望它在&中加1 #34;双重销售&#34;柱。
基本上,我希望SAS匹配客户ID,然后下行,并查找第一个日期后7天内的日期。
答案 0 :(得分:0)
问题:为什么ID=C
在您的示例中有DOUBLE_SOLD=1
?没有其他ID=C
可供比较。在任何情况下,您都希望按ID date
排序,然后DATE
滞后ID
,以便使用简单的逻辑进行比较:
proc sort data = have;
by ID DATE;
run;
** edit sales to 1/0 **;
data have1; set have;
array a(3) APPLE ORANGE PEAR;
do i=1 to dim(a);
if a(i)>0 then a(i)=1;
end;
drop i;
run;
data want; set have1;
by ID;
LAG_DATE=lag(DATE);
if first.ID then LAG_DATE = .;
if LAG_DATE ne . then do;
if (DATE-LAG_DATE)<=7 and sum(APPLE,ORANGE,PEAR)>0 then DOUBLE_SOLD=1;
else if (DATE-LAG_DATE)>7 or sum(APPLE,ORANGE,PEAR)=0 then DOUBLE_SOLD=0;
end;
else do;
if sum(APPLE,ORANGE,PEAR)>1 then DOUBLE_SOLD=1;
else DOUBLE_SOLD=0;
end;
format LAG_DATE mmddyy10.;
run;