我正在尝试根据日期和时间合并两个数据集。
在两组中,日期为date9。格式和时间是时间5。格式。
我认为如下所示的简单合并就足够了。
我猜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个变量。
我知道有些记录应该匹配。
来自表格
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相匹配的东西吗?
答案 0 :(得分:2)
这里的困难在于,时间不仅仅是小时和分钟,而是秒数 - 即使格式中没有显示。
要解决此问题,我只需使用圆函数将sas时间舍入到最接近的60(即最近的分钟);
time_round=round(put(time_num, best12.), 60);
然后我在time_round上合并(这是从午夜开始的一个sastime,例如5940)
这样做解决了上述合并问题。