我有一个数据集(表A),如下所示:
Location_id | Arrival_Date | Length_of_Stay | Demand |
------------+---------------+--------------- +----------+
L_1 | 23-JUL-16 | 1 | 5 |
L_1 | 23-JUL-16 | 2 | 7 |
L_1 | 23-JUL-16 | 3 | 8 |
L_1 | 23-JUL-16 | 4 | 3 |
L_1 | 24-JUL-16 | 1 | 3 |
L_1 | 24-JUL-16 | 2 | 2 |
L_1 | 24-JUL-16 | 3 | 4 |
L_1 | 25-JUL-16 | 1 | 5 |
........... ............ ............. .......
我想转到下表:
Location_id | Stay_Date | Demand |
L_1 | 23-JUL-16 |23= 5+7+8+3| (Arrival JUL-23, 4 Length_of_stays)
L_1 | 24-JUL-16 |27= 7+8+3+3+2+4| (Arrival JUL-24, 3 Length_of_stays and Arrival JUL-23, 3 Length_of_stays)
L_1 | 25-JUL-16 |22= 8+3+2+4+5|(JUL-23, 2 length_of_stays; JUL-24, 2 length_of_stays; JUL-25, 1 length_of_stay)
L_1 | 26-JUL-16 | 7 |(JUL-23, 1 length_of_stay)
需求以Stay_Date计算,根据Arrival_Date和Length_of_Stay计算。
如何在SAS中制作?谢谢!
答案 0 :(得分:1)
你还没有完全解释你的问题。 我的假设:
每一行都是逗留的记录和该住宿的需求水平。
如果逗留时间为多天(逗留时间> 1),则创建一条记录 每一天的住宿。
您还应该在数据步骤中发布样本数据。
data have;
informat arrival_date anydtdte.;
format arrival_date date9.;
infile cards dlm='|';
input Location_id $ Arrival_Date Length_of_Stay Demand ;
cards;
L_1 | 23-JUL-16 | 1 | 5 |
L_1 | 23-JUL-16 | 2 | 7 |
L_1 | 23-JUL-16 | 3 | 8 |
L_1 | 23-JUL-16 | 4 | 3 |
L_1 | 24-JUL-16 | 1 | 3 |
L_1 | 24-JUL-16 | 2 | 2 |
L_1 | 24-JUL-16 | 3 | 4 |
L_1 | 25-JUL-16 | 1 | 5 |
;
run;
*Create a record for each day of the visit;
data temp;
set have;
format stay_date date9.;
do i=1 to length_of_stay;
stay_date=arrival_date-1 + i;
output;
end;
run;
*summarize the totals;
proc sql;
create table want as
select stay_date, sum(demand) as total_demand
from temp
group by stay_date
order by stay_date;
quit;