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

che*_*gcj 5 join r date posixct data.table

在以下示例中,有人可以向我解释为什么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
Run Code Online (Sandbox Code Playgroud)

我的目的是让date来自dt1dt2Date格式,而不是POSIXctid(不同id会有不同date).我该怎么办?

以下是我想要的:

dt2
#    id       date
# 1:  1 2015-03-31
# 2:  2 2015-03-31
Run Code Online (Sandbox Code Playgroud)

编辑:

我尝试过以下方法:

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

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

MrF*_*ick 2

您可以使用

dt2[dt1, date:=as.Date(i.date)]
Run Code Online (Sandbox Code Playgroud)

您可能还想查看有关更改data.tables 中的数据类型的转换 data.table 中的列类的问题。

  • @hengcj 这很可能是时区问题。将您的时区传递给“as.Date”。 (3认同)