-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 に答える