在下面的示例中,有人可以向我解释为什么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?
答案 0 :(得分:2)
您可以使用
dt2[dt1, date:=as.Date(i.date)]
您可能还希望在data.tables中看到有关更改数据类型的问题Convert column classes in data.table。