使用R中的data.table将POSIXct列连接到Date列

时间:2015-06-25 17:43:29

标签: r date join data.table posixct

在下面的示例中,有人可以向我解释为什么2015-03-31的日期更改为1034-04-03?

dt1 = data.table(id = c(1,2), date = as.POSIXct("2015-03-31 BST"), key = "id")
dt1
#    id       date
# 1:  1 2015-03-31
# 2:  2 2015-03-31
dt2 = data.table(id = c(1,2), date = as.Date(NA), key = "id")
dt2
#    id date
# 1:  1 <NA>
# 2:  2 <NA>
dt2[dt1, date := i.date]
dt2
#    id       date
# 1:  1 1034-04-03
# 2:  2 1034-04-03

我的目标是从date格式dt1 dt2 Date而不是POSIXct格式id id date会有不同的dt2 # id date # 1: 1 2015-03-31 # 2: 2 2015-03-31 )。我该怎么做?

以下是我想要的:

dt2[dt1, date := as.Date(i.date)]
dt2
#    id       date
# 1:  1 2015-03-30
# 2:  2 2015-03-30

修改

我尝试过以下方法:

{{1}}

不幸的是,它给了我2015-03-30而不是2015-03-31 ... ???如何获得2015-03-31?

1 个答案:

答案 0 :(得分:2)

您可以使用

dt2[dt1, date:=as.Date(i.date)]

您可能还希望在data.tables中看到有关更改数据类型的问题Convert column classes in data.table