Date SAS在日期和时间上合并

Date SAS在日期和时间上合并,date,time,merge,format,sas,Date,Time,Merge,Format,Sas,我正在尝试根据日期和时间合并两个数据集 在这两组中,日期都是date9。格式和时间为time5。格式 我认为下面这样一个简单的合并就足够了 我猜SAS将日期读取为日期时间,时间以秒为单位 data test; merge JRA_UK_July_spot (in=a) UK_surveys_30plus (in=b); by date time_num; if a and b; run; 合并表中没有记录 注:从数据集WORK.JRA_UK_JULY_SPOT读取了19517个观测值。 注:从

我正在尝试根据日期和时间合并两个数据集

在这两组中,日期都是date9。格式和时间为time5。格式

我认为下面这样一个简单的合并就足够了

我猜SAS将日期读取为日期时间,时间以秒为单位

data test;
merge JRA_UK_July_spot (in=a)
UK_surveys_30plus (in=b);
by date time_num;
if a and b;
run;
合并表中没有记录

注:从数据集WORK.JRA_UK_JULY_SPOT读取了19517个观测值。 注:从数据集WORK.UK_SURVEYS_30PLUS中读取了114235个观察值。 注:数据集WORK.TEST有0个观察值和14个变量

我知道有些记录应该匹配

从表a

time_num   date
9:07       01JUL2014
9:07       01JUL2014
来自表b

date        time_num
01JUL2014   9:07
01JUL2014   9:07
01JUL2014   9:07

这可能与日期/时间的存储方式有关吗?例如,9:07可能是9:07:34,而这与另一个可能是9:07:11的时间不匹配吗?

这里的困难在于,时间不是以小时和分钟的形式读取的,而是以秒的形式读取的,即使它不是以格式显示的

为了解决这个问题,我使用round函数将sas时间四舍五入到最接近的60(即最接近的分钟)

time_round=round(put(time_num, best12.), 60);
然后,我在time_round上合并(这是从午夜开始以秒为单位的时间,如5940)


这样做解决了上述合并问题。

出现了什么问题?您是否收到意外的结果、错误消息或其他信息?也许问题的一些细节(可能是样本数据和/或任何错误消息)将有助于集中任何响应。嗨,阿米尔。我刚刚根据你的建议编辑了这个问题。谢谢。要测试你关于秒的理论,请尝试在日志中显示一些时间值,例如
put time\u num time然后它会显示存储的任何秒数。或者使用best12。显示存储的确切数字的格式,即自1960年1月1日以来的秒数。我将时间四舍五入到60,这似乎解决了问题。谢谢大家。