2013-05-20 3 views
-1

Основываясь на данных, можете мне помочь - составление программы, которая содержитПоиск ближайшей даты до указанной даты в sas dataset?

test_date ближайший к delivery_date.

delivery_date 11/16/2011

test_date 21/ноябрь/2011 10/ноябрь/2011 5/октябрь/2010

Заранее спасибо

+0

Ваш вопрос неполный. Пожалуйста, отредактируйте его, чтобы объяснить структуру данных. Неясно, являются ли эти два разных набора данных или один набор данных, если test_dates находятся в нескольких строках или одной строке с тремя столбцами. Являются ли эти переменные даты или строки? Как вы хотите обрабатывать связи? – Joe

ответ

0

Может на самом деле не ответ правильно, без дополнительной информации, но если у вас есть два набора данных и одна строка в день, а также фактические переменные даты, то решение будет примерно таким:

create table finaldsn as 
select a.* 
, b.* 
, a.delivery_date-b.test_date as days 
, abs(calculated days) as absdays 
, min(calculated absdays)as close 
from dsnA as a 
full join 
dsnB as b 
on a.subject=b.id 
where a.delivery_date ne . and b.ltest_datebdt ne . 
and b.id in (select distinct subject 
from dsnA) 
group by a.subject, a.delivery_date 
having calculated absdays=calculated close 
; 
quit; 

Это из следующего документа: http://www.lexjansen.com/pharmasug/2003/coderscorner/cc001.pdf, который также представляет собой несколько других решений.

+0

эй Джо данные два отдельных набора с одной датой в переменной delivery_date от –

+0

Эй, я не знаю, как включить данные здесь, но идея в этом. У меня есть файл excel, и в нем есть два листа, один содержит одно наблюдение для переменной delivery_date (11/16/2011), а другой лист содержит 20 наблюдений для переменной test_date. Моя проблема заключается в том, как выполнить расчет, чтобы найти ближайшую дату теста к дате поставки. И как сопоставить одно наблюдение с 20 для переменной даты тестирования. Если вы хотите увидеть данные, я буду рад предоставить их. просто дай мне знать, как. Спасибо! –

+0

Все это то, что я предполагал. Пожалуйста, посмотрите на ответ и сообщите мне, если он работает, или нет, то, что вам нужно, поможет. – Joe

0

Вы можете использовать функцию INTCK SAS для расчета различию между датой образца и вашей целевой датой, то вы можете просто сохранить дату, которая находится ближе к 0.

здесь ссылка, так что вы можете быстро выбрать на этой функции:

http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000212868.htm

также, не стесняйтесь проверить другие функции присутствуют на левой стороне звена, так как они могут пригодиться в долгосрочной перспективе.

+0

INTCK предназначен для расчета интервальных разниц, а не наивных различий. Даты SAS сохраняются как целое число дней, поэтому достаточно простого сравнения. INTCK будет просто путаться. – Joe

Смежные вопросы