【发布时间】:2021-07-19 14:45:22
【问题描述】:
以下简单代码:
library(sqldf)
library(data.table)
OwnerUserId <- c(24612)
CreationDate <- c("2016-05-27 03:17:41")
DataTable <- data.table(OwnerUserId, CreationDate)
write.csv(DataTable, "DataTable.csv")
DataTable <- fread("DataTable.csv", stringsAsFactors = TRUE)
sqldf("
SELECT OwnerUserId, CreationDate
FROM DataTable
WHERE OwnerUserId == 24612
")
DataTable[OwnerUserId == 24612, .(OwnerUserId, CreationDate),]
产生以下输出:
OwnerUserId CreationDate
1 24612 2016-05-27 09:17:41
> DataTable[OwnerUserId == 24612, .(OwnerUserId, CreationDate),]
OwnerUserId CreationDate
1: 24612 2016-05-27 03:17:41
我只是好奇这种行为是否符合预期。
如果是,那么我们如何通过 sqldf 和 data.table 得到相同的结果?
【问题讨论】:
-
@G.Grothendieck 是的,"Sys.setenv(TZ = "UTC")" 解决了这个问题。在问了这个问题后,我也尝试了这个。但是,还有一个与类型不匹配(本地与 UTC 类型)有关的问题。无论如何,这是另一个故事。感谢您的评论!
-
请务必阅读整个主题。 Sys.setenv 只是其中一种解决方案。
-
@G.Grothendieck 现在我阅读了整个线程。很多变通办法。再次感谢!
标签: sql r data.table sqldf