首页 文章

SAS合并日期和时间

提问于
浏览
2

我试图根据日期和时间合并两个数据集 .

在两个集合中,日期是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个变量 .

我知道有些记录应该匹配 .

从表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的匹配?

1 回答

  • 2

    这里的困难在于时间不会被读取为小时和分钟,而是以秒为单位 - 即使格式中没有显示 .

    为了解决这个问题,我简单地使用圆函数将sas时间舍入到最接近的60(即最近的分钟);

    time_round=round(put(time_num, best12.), 60);
    

    然后我在time_round上合并(这是从午夜开始的秒数,例如5940)

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

相关问题