gpt4 book ai didi

r - 将strptime函数应用于data.table的每个成员

转载 作者:行者123 更新时间:2023-12-04 13:26:37 25 4
gpt4 key购买 nike

我在将函数应用于data.table的每个成员时遇到麻烦。这是一个简化的示例:

dt <- data.table( a= c("30JAN14:23:16:00","23MAY12:02:00:00"), 
b=c("03AUG09:00:00:00","13JUN12:02:00:00"),
c=c("31JAN14:15:19:00","23MAY12:00:00:00"))

strptime(dt[1,1,with=FALSE], "%d%B%y:%H:%M:%S")

返回 "2014-01-30 23:16:00 PST"
但是,当我尝试将其应用于data.table时,我没有得到我想要的东西,并且收到了一些指责性的消息。
cols <- c("a","b","c")
dt[, (cols):=sapply(.SD, function(x) strptime(x, "%d%B%y:%H:%M:%S")),.SDcols=cols]

最佳答案

strptime返回POSIXlt类,它实际上是一个列表,解释了为什么在data.table或data.frame对象中使用它会导致问题:

> dt[, (cols):=lapply(.SD, function(x) as.POSIXct(strptime(x, "%d%B%y:%H:%M:%S"))),.SDcols=cols]
> dt
a b c
1: 2014-01-30 23:16:00 2009-08-03 00:00:00 2014-01-31 15:19:00
2: 2012-05-23 02:00:00 2012-06-13 02:00:00 2012-05-23 00:00:00

关于r - 将strptime函数应用于data.table的每个成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32658266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com