例私のコードでは、この時点では:私がいたときネストされたifelse文のスピードアップ - R
time_elapsed network_name daypart day
1: 4705 Laff TV 2016-09-09 03:11:35 Friday
2: 1800 CNN 2016-09-10 08:00:00 Saturday
3: 23 INSP 2016-09-02 18:00:00 Friday
4: 148 NBC 2016-09-02 16:01:26 Friday
5: 957 History Channel 2016-09-07 14:44:03 Wednesday
6: 1138 Nickelodeon/Nick-at-Nite 2016-09-09 16:00:00 Friday
7: 120 Starz Edge 2016-09-07 15:28:59 Wednesday
8: 268 Starz Encore Westerns 2016-09-07 17:13:05 Wednesday
9: 6 CBS 2016-09-10 04:00:00 Saturday
10: 69 Independent 2016-09-07 12:48:11 Wednesday
11: 4151 NBC 2016-09-09 04:32:37 Friday
12: 570 PBS: Public Broadcasting Service 2016-09-07 16:17:58 Wednesday
13: 1421 NBCSN 2016-09-03 15:22:23 Saturday
14: 466 Estrella TV (Broadcast) 2016-09-04 19:00:00 Sunday
(一般的に200以上の万行)
を私は数ヶ月前に、次のネストされたifelse文を書きました私のスクリプト全体を数百万行に渡って実行していますが、今はもっと大きな規模で実行しています。私は本当にそれを少し速くする方法を見つけたいと思います。
targets_random$daypart <- ifelse((wday(targets_random$daypart) == 1 |
wday(targets_random$daypart) == 7), "W: Weekend",
ifelse(hour(targets_random$daypart) <= 2, "LP: Late Prime",
ifelse((hour(targets_random$daypart) >= 3 &
hour(targets_random$daypart) <= 5), "O: Overnight",
ifelse((hour(targets_random$daypart) >= 6 &
hour(targets_random$daypart) <= 9), "EM: Early Morning",
ifelse((hour(targets_random$daypart) >= 10 &
hour(targets_random$daypart) <= 16), "D: Day",
ifelse((hour(targets_random$daypart) >= 17 &
hour(targets_random$daypart) <= 20), "F: Fringe",
ifelse(hour(targets_random$daypart) >= 21, "P: Prime", NA)))))))
私はdata.tableソリューションを使ってみましたが、ほんの少し速くて、自分のdata.tableをリストに変換しました。私の人生のために、私は理由を見ることができませんでした。これを元に戻すのに十分な時間を追加しても、それは節約に値するものではありません
ご提案いただければ幸いです。私が働いていること、それに固執しなければならないなら、それはうまくいくでしょう。現在、完全なコードを実行するのに約3.5時間かかります。最大の部分はSQLクエリと結果のファイル作成ですが、可能な限り多くの時間を削ることができればいいと思います!
(追記として - 。!それは私がdata.table構文で部品のトンを交換し、ほぼ8時間前にするために使用私は今、公式ファンだ)
parLapplyを使用してマルチプル行を一度に実行できるかもしれません。 – Rilcon42
'?cut'を参照してください。あなたは 'cut(targets_random $ daypart $ hour、c(-Inf、3、6、10、17、21、Inf)、include.lowest = TRUE、right = FALSE)のようなものを使うことができますが、 '' W:Weekend '''どこでも '(targets_random $ daypart $ wday + 1)%で置き換えて、' 'label'引数を' 'LP:Late Prime ''、 'O:Overnight' %c(1,7) ' –