Слияние наборов данных с 2 разными переменными времени в SAS - PullRequest
0 голосов
/ 15 марта 2010

Hye Guys,

для тех, кто регулярно просматривает этот сайт, извините за уже другой вопрос (однако я сам решил свой последний вопрос!)

У меня есть еще одна проблема с объединением наборов данных, кажется, что учет времени в наборах данных - это настоящая боль в заднице. Мне удалось объединить месяцы в моих предыдущих наборах данных, однако, похоже, у меня есть окончательный набор данных, в котором в качестве переменной отсчета времени используется только четверть. Так что, где все мои обычные базы данных имеют месяц 1-ххх в качестве индикатора времени, эта база данных имеет квартал в качестве индикатора времени.

Я все еще хочу добавить переменные этой последней базы данных, назовем ее TVOL, в мою базу данных WORK.

Краткое резюме

КВАРТАЛ: Квартал 0 = ЯНВ1996-МАРТ1996

Месяц: Месяц 0 = JAN1996

Пример: TVOL

ТВОЛ _______ Тикер __________ Квартал

1500 _______ AA ________________ -1

52546 _______ BB ________________ 15

Пример: РАБОТА

БЕТА _______ Тикер __________ Месяц

1,52 _______ AA ________________ 2

1,54 _______ BB ________________ 3

Пример: Объединено:

БЕТА _______________ ТВОЛ _______ Тикер __________ Месяц

1,52 ________________ 500 _________ AA ________________ 2

Теперь я хочу объединить эти 2 таблицы, используя следующие отношения

если месяц находится в 1 квартале, то должны использоваться данные за 0 квартал, поэтому, если у меня есть наблюдение в iWORK с датой 2FEB1996, TVOL за квартал -1 следует поставить за этим наблюдением.

Что-то вроде IF month = квартал я использую данные квартала i-1.

Кроме того, поскольку TVOL измеряется ежеквартально, и я должен вводить ежемесячно, мне нужно взять среднее значение, поэтому (TVOL / 3) следует добавить в качестве переменной.

Спасибо!

1 Ответ

0 голосов
/ 15 марта 2010

Хорошо, я решил свою проблему!

 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;

Я создал переменную четверти в своем базовом наборе данных и объединил 2 набора на основе четверти и тикера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...