在SAS中合并具有2个不同时间变量的数据集

时间:2010-03-15 09:56:44

标签: time merge dataset

Hye Guys,

对于那些经常浏览本网站的人抱歉已经是另一个问题(但我自己确实解决了我的上一个问题!)

我在合并数据集时遇到了另一个问题,似乎在数据集中占用时间是一个真正的痛苦。我成功地在之前的数据集中合并了几个月,但似乎我有一个最终数据集,其中只有四分之一作为时间计数变量。所以我的所有普通数据库都将月份1- xxx作为时间指示器,这个数据库有四分之一作为时间指示器。

我仍然希望将最后一个数据库的变量添加到我的WORK数据库中,我们将其称为TVOL。

快速摘要

季度:第0季= JAN1996-MAR1996

月:第0个月= JAN1996

示例:TVOL

TVOL _______ Ticker __________ Quarter

1500 _______ AA ________________ -1

52546 _______ BB ________________ 15

示例:工作

BETA _______ Ticker __________月

1.52 _______ AA ________________ 2

1.54 _______ BB ________________ 3

示例:合并:

BETA _______________ TVOL _______ Ticker __________月

1.52 ________________ 500 _________ AA ________________ 2

我现在想要使用以下关系合并这两个表

如果月份在第1季度,则必须使用第0季度的数据,因此如果我观察到日期为2FEB1996的nWORK,则必须将1/1的TVOL置于此观察之后。

像IF月=季度我使用数据季度i-1。

另外,由于TVOL每季度测量一次,我必须按月计算,我必须采用平均值,因此(TVOL / 3)应作为变量添加。

谢谢!

1 个答案:

答案 0 :(得分:0)

好的,所以我解决了我的问题!

 data test;
    set test;
    Quarter=intck('qtr','01apr96'd,recdats);
    put _all_;
run;
proc sort data=test;
by ticker quarter;
run;
proc sort data=wtvol;
by ticker quarter;
run;
data test;
merge test(in=a) wtvol(in=b);
by ticker quarter;
frommerg=a;
fromwtvol=b;
run;
data test;
set test;
if frommerg=0 then delete;
run;
data test;
set test;
if fromwtvol = 0 then delete;
run;
data test;
set test;
drop frommerg fromwtvol;
run;

我在我的基础数据集中创建了一个四分之一变量,并根据季度和自动收录器合并了两组。