2013-05-20 90 views
-1

基於任何人都可以幫助我的數據 - 製作一個包含程序在sas數據集中查找指定日期的最近日期?

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

可以使用SAS功能INTCK計算樣品的日期和你的目標日期之間的性差異,那麼你可以保持更接近0

這裏是一個鏈接,使您可以快速挑選日期死了這條功能:

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

還,隨時檢查出其他功能出現在鏈接的左側,因爲它們可以派上用場,從長遠來看。

+0

INTCK用於計算區間差異,而不是天真的差異。 SAS日期存儲爲整數天,所以簡單的比較就足夠了。 INTCK只會混淆視聽。 – Joe