在SAS中,我有一个过去的start_date列和一个end_date为今天的列。我有一个价格和一个ID。 ID是截然不同的。
我需要垂直旋转日期以获得唯一的日期,价格和ID。
谢谢。
START:
3/26/2017 3/28/2017 3.25 12345678
END:
12345678 3.25 3/26/2017
12345678 3.25 3/27/2017
12345678 3.25 3/28/2017
答案 0 :(得分:1)
好吧,我解释这个问题。 (没有冒犯的意思。)
您有日期间隔,并希望在保留ID和价格的同时为它们之间的每个日期设置行。
首先我们生成一些数据。
data Begin;
input start :DATE9. end :DATE9. price ID;
datalines;
'26MAR17'd '28MAR17'd 3.25 12345678
'1JAN17'd '4JAN17'd 5.6 876543221
;
run;
我们总是希望把它们排除在外。
proc sort data= begin; by start; run;
data wanted(keep=ID price date);
set begin;
by start; /*Each start date begins the following loop*/
do while (start <= end);
date=start; /*This is just that we get the right name out from output*/
output;
start= start+1;
end;
run;
请确保结束&gt;开始,否则您将遇到无限循环。 (或者添加对代码的比较。)