0

rにdatetimeを持つリスト要素のループ

名前の間違いのある df があります。間違い df を ID で分割しました。現在、リストには 300 を超えるさまざまなオブジェクトがあります。

library(dplyr)
df <- split.data.frame(mistake, mistake$ID)

すべてのリスト オブジェクトには、2 つの異なる日時スタンプがあります。最初に、この 2 つの日時スタンプの間の分数が必要です。次に、変数 stay によってオブジェクトの行を複製します (これは、sat 時間と end 時間の間の difftime でもあります)。次に、インクリメント n_mintes でテスト変数を上書きします。

library(lubridate)
start_date <- df[[1]]$datetime
end_date <- df[[1]]$gehtzeit
n_minutes <- interval(start_date,end_date)/minutes(1)
see <- start_date + minutes(0:n_minutes)#the diff time in minutes I need 
df[[1]]$test<- Sys.time()#a new variable 
df[[1]] <- data.frame(df[[1]][rep(seq_len(dim(df[[1]])[1]),df[[1]]$stay+1),1:17, drop= F], row.names=NULL)
df[[1]]$test <- format(start_date + minutes(0:n_minutes), format = "%d.%m.%Y %H:%M:%S")

リストのすべてのオブジェクトでこれを行いたいです。そして、リストを「rbind」または「unsplit」します。ループが必要なのはわかっています。しかし、リスト要素でこれを行う方法がわかりません。どんな助けでも作成できます!

これは小さな df の例です。

mistake


Baureihe Verbund      Fahrzeug Code                           Codetext    Subsystem          Kommt.Zeit
71      411 ICE1166 93805411866-7 1A50 Querfederdruck 1 ungleich Sollwert Neigetechnik 29.07.2018 23:00:07
72      411 ICE1166 93805411866-7 1A50 Querfederdruck 1 ungleich Sollwert Neigetechnik 04.08.2018 11:16:41
             Geht.Zeit           Anstehdauer Jahr Monat   KW Tag Wartung.geht            datetime            gehtzeit
71 29.07.2018 23:02:56 00 Std 02 Min 49 Sek  2018     7 KW30  29            0 2018-07-29 23:00:00 2018-07-29 23:02:00
72 04.08.2018 11:19:20 00 Std 02 Min 39 Sek  2018     8 KW31   4            0 2018-08-04 11:16:00 2018-08-04 11:19:00
   bleiben                                           ID
71  2 secs 2018-07-29 23:00:00 2018-07-29 23:02:00 1A50
72  3 secs 2018-08-04 11:16:00 2018-08-04 11:19:00 1A50

そして、ここに構造があります:

    str(mistake)
'data.frame':   2 obs. of  18 variables:
 $ Baureihe    : int  411 411
 $ Verbund     : Factor w/ 1 level "ICE1166": 1 1
 $ Fahrzeug    : Factor w/ 7 levels "93805411066-4",..: 7 7
 $ Code        : Factor w/ 6 levels "1A07","1A0E",..: 3 3
 $ Codetext    : Factor w/ 6 levels "ITD Karte gestört",..: 5 5
 $ Subsystem   : Factor w/ 1 level "Neigetechnik": 1 1
 $ Kommt.Zeit  : Factor w/ 70 levels "02.08.2018 00:07:23",..: 68 6
 $ Geht.Zeit   : Factor w/ 68 levels "01.08.2018 01:30:25",..: 68 8
 $ Anstehdauer : Factor w/ 46 levels "00 Std 00 Min 01 Sek ",..: 12 4
 $ Jahr        : int  2018 2018
 $ Monat       : int  7 8
 $ KW          : Factor w/ 5 levels "KW27","KW28",..: 4 5
 $ Tag         : int  29 4
 $ Wartung.geht: int  0 0
 $ datetime    : POSIXlt, format: "2018-07-29 23:00:00" "2018-08-04 11:16:00"
 $ gehtzeit    : POSIXlt, format: "2018-07-29 23:02:00" "2018-08-04 11:19:00"
 $ bleiben     :Class 'difftime'  atomic [1:2] 2 3
  .. ..- attr(*, "units")= chr "secs"
 $ ID          : chr  "2018-07-29 23:00:00 2018-07-29 23:02:00 1A50" "2018-08-04 11:16:00 2018-08-04 11:19:00 1A50"
4

2 に答える 2