我有一个大小为900Mb的data.table score
。列datetime
基本上是("2018-05-25 10:10:53:000000")
格式的日期时间。我正在尝试使用以下代码将此特定列的类character
转换为POSIXlt
:
score[,newdate := as.POSIXlt.character(score[["datetime"]],tz="IST",format="%Y-%m-%d %H:%M:%S")][,datetime:=NULL]
此操作呈现大小为211 GB的data.table。这里发生了什么。请帮忙。
dput(head(score))
structure(list(id1 = c(12234398L, 323437283L, 12343344L,
545465653L, 312342343L, 22344232L), id2 = c(216231535L,
324345453L, 345474698L, 87787950L, 656565531L, 565656657L),
Score = c(756L, 777L, 788L, 234L, 656L, 788L), datetime = c("2017-05-08 00:00:00.0000000",
"2018-07-12 01:24:46.0000000", "2015-16-02 00:00:00.0000000",
"2016-03-22 23:06:45.0000000", "2016-07-14 12:23:45.0000000",
"2014-05-03 03:33:13.0000000")), .Names = c("id1",
"id2", "Score", "datetime"), class = c("data.table",
"data.frame"), row.names = c(NA, -6L), .internal.selfref = <pointer:
0x190cc98>)
答案 0 :(得分:2)
参考此link
data.table
不接受POSIXlt
列。您可以使用POSIXct
代替POSIXlt
。
score[, newdate := as.POSIXct(datetime, tz = "IST", format = "%Y-%m-%d %H:%M:%S")][, datetime := NULL]
答案 1 :(得分:1)
要解释一下,为什么PATH="/Library/Frameworks/Python.framework/Versions/3.6/bin:${PATH}"
export PATH
增长如此之多:
data.table
d <- as.POSIXlt.character("2017-05-08 00:00:00.0000000", ,tz="IST",format="%Y-%m-%d %H:%M:%S")
d
object.size(d) # 2024 Bytes in my configuration
# 2024 bytes
说
类“POSIXlt”是表示...
的向量的命名列表
这意味着每个?POSIXlt
个对象都包含许多代表日期和时间组成部分的元素。
这会花费大量内存(不记得,但每个POSIXlt元素大约80个字节+向量结构的开销)。
POSIXlt
的赋值运算符对列表进行了特殊处理(每个列表元素都分配给不同的列),因此您可以使用以下代码片段收到警告:
警告讯息: 在
data.table
(数据,,[.data.table
(newdate,as.POSIXlt.character(data [[“datetime”]])中: 提供了11个项目,分配给6个“newdate”栏目(5个未使用的)