にループ動作を最適化私はイベントがすでにそのタイムスタンプによってソートされ、私は生成したいされている以下の形式でR - 長いテーブル形式
+-----------+-------+ | ProcessId | Event | +-----------+-------+ | 111 | A | | 111 | B | | 111 | C | | 111 | D | | 111 | E | | 112 | A | | 112 | B | | 112 | D | | 112 | E | | 113 | A | | 113 | B | | 113 | C | | 113 | D | | 113 | E | +-----------+-------+
を周りに120万行を含む長い形式のテーブルデータを持っています長形式テーブルから次のような別のテーブルへの別の列への各プロセスidのプロセスフロー文字列
processflow < - ( 'A-> B-> C-> D-> E-' B-> D-> E-、A-> B-> C-> D-> E」など)
私は以下の行を試しましたo fコード。それぞれのi3、4GB RAMラップトップのコアでは、それぞれ約850秒かかります。これをもっと速くする代替手段は何ですか? 任意のガイダンスは
バージョン1 foreachのパッケージに
processflow <- foreach(i=processflow_detection$process_id,.combine='c') %do% state_flow_identifier(i)
を使用してパッケージを使用してdplyr
state_flow_identifier <- function(x){
y <-filter(data_longformat,process_id==x)
y_v <- as.vector(y$Event)
as.character(paste(y_v,collapse = '->'))
}
processflow_detection <- mutate(processflow_detection,processflow = apply(processflow_detection['process_id'],1,function(x)state_flow_identifier(x)))
バージョン2のおかげで参考になります。
ありがとうございます。あなたの答えは、実行時間を10秒未満に短縮するのに役立ちました。 –