-1

我尝试使用以下代码拆分大约 800 万个元素的字符向量

library(parallel)
detectCores()

s <- system.time({
    sepTime <- mclapply(orders_largest1stGroup$Time, function(x) x %>% strsplit(split = " ") %>% unlist() %>% strsplit(split = ":") %>% unlist(), mc.cores = 2) 
})

sepTime %>% unlist() %>% matrix(ncol=4, byrow=T) %>% as.data.frame()

向量orders_largest1stGroup$Time如下

"2016-01-01 13:37:23", "2016-01-02 16:37:23", "2016-01-03 12:37:23"

然而,15 多分钟过去了,它仍在运行。所以,我想知道我的代码或我的执行方法一定有问题。

谁能看看并告诉我如何快速运行这段代码?

4

2 回答 2

0

我认为这会比 apply 方法更有效。

dat <- c("2016-01-01 13:37:23", "2016-01-02 16:37:23", "2016-01-03 12:37:23")
dat <- strptime(dat, format="%F %X") 
date <- format(dat, "%F")
hour <- format(dat, "%H")
minute <- format(dat, "%M")
seconds <- format(dat, "%S")

如果您有兴趣优化该过程,也许您可​​以将数据拆分为不同的子集,并使用 mclapply 或等效工具分别调整每个集合。

于 2016-05-27T03:17:59.937 回答
0

拆分这 800 万行 data.frame 的更有效解决方案: largeData$Time 是一个字符串向量,例如

"2016-01-01 13:37:23", "2016-01-02 16:37:23", "2016-01-03 12:37:23"

要在 30 秒内拆分它们,请执行以下操作而不是for循环:

largeData %>% mutate(Date=Time %>% substr(1,10) %>% as.Date(), Hour=Time %>% substr(12,13) %>% as.numeric(), Minute=Time %>% substr(15,16) %>% as.numeric())
于 2016-05-30T06:15:16.460 回答