unregelmäßige Zeitverschiebung
Verfasst: Mi Dez 08, 2021 10:54 am
Hallo zusammen!
Ich bräuchte mal wieder eure Hilfe!
Ich habe zwei dfs (Df1 und DF2).
DF1 enthält Minutenwerte (datetime) einer Variable RR (diese spielt hierbei keine Rolle), DF2 enthält pro Datum eine Zeitverschiebung (Verschiebung) in Minuten. Die erste Zeile in DF2 hat eine Zeitverschiebung von 0 (also keine Zeitverschiebung), ab der dritten Spalte habe ich dann eine Zeitverschiebung von 2, bis zum nächsten Datum, wo sich dieser ändert. Die Änderungen sind nicht konstant.
Folgendes habe ich bis jetzt probiert:
Leider funktioniert es nicht, und ich weiß auch nicht, woran das liegt.
Über jede Hilfe und Input bin ich dankbar. Gerne auch ohne for-loop, dass ich einen sehr großen df habe, wo es sicherlich schnellere Möglichkeiten gibt.
Liebe Grüße
Ilonia
Ich bräuchte mal wieder eure Hilfe!
Ich habe zwei dfs (Df1 und DF2).
Code: Alles auswählen
DF1 <- dput(DF1)
structure(list(date = structure(c(17722, 17722, 17722, 17722,
17722, 17722, 17723, 17723, 17723, 17723, 17723, 17723, 17723,
17723, 17723, 17723, 17723, 17723, 17723, 17723, 17723, 17723,
17723, 17723, 17723, 17723, 17723, 17723, 17723, 17723, 17723,
17723, 17723, 17723, 17723, 17723, 17723, 17723, 17723, 17723,
17723, 17723, 17723, 17723, 17723, 17723, 17723, 17723, 17723,
17723, 17723, 17723, 17723, 17723, 17723, 17723, 17723, 17723,
17723, 17723, 17723, 17723, 17723, 17723, 17723, 17723, 17723,
17723, 17723, 17723, 17723, 17723, 17723, 17723, 17723, 17723,
17723, 17723, 17723, 17723, 17723, 17723, 17723, 17723, 17723,
17723, 17723, 17723), class = "Date"), time = c("23:54:00", "23:55:00",
"23:56:00", "23:57:00", "23:58:00", "23:59:00", "00:00:00", "00:01:00",
"00:02:00", "00:03:00", "00:04:00", "00:05:00", "00:06:00", "00:07:00",
"00:08:00", "00:09:00", "00:10:00", "00:11:00", "00:12:00", "00:13:00",
"00:14:00", "00:15:00", "00:16:00", "00:17:00", "00:18:00", "00:19:00",
"00:20:00", "00:21:00", "00:22:00", "00:23:00", "00:24:00", "00:25:00",
"00:26:00", "00:27:00", "00:28:00", "00:29:00", "00:30:00", "00:31:00",
"00:32:00", "00:33:00", "00:34:00", "00:35:00", "00:36:00", "00:37:00",
"00:38:00", "00:39:00", "00:40:00", "00:41:00", "00:42:00", "00:43:00",
"00:44:00", "00:45:00", "00:46:00", "00:47:00", "00:48:00", "00:49:00",
"00:50:00", "00:51:00", "00:52:00", "00:53:00", "00:54:00", "00:55:00",
"00:56:00", "00:57:00", "00:58:00", "00:59:00", "01:00:00", "01:01:00",
"01:02:00", "01:03:00", "01:04:00", "01:05:00", "01:06:00", "01:07:00",
"01:08:00", "01:09:00", "01:10:00", "01:11:00", "01:12:00", "01:13:00",
"01:14:00", "01:15:00", "01:16:00", "01:17:00", "01:18:00", "01:19:00",
"01:20:00", "01:21:00"), RR = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), datetime = structure(c(1531266840,
1531266900, 1531266960, 1531267020, 1531267080, 1531267140, 1531267200,
1531267260, 1531267320, 1531267380, 1531267440, 1531267500, 1531267560,
1531267620, 1531267680, 1531267740, 1531267800, 1531267860, 1531267920,
1531267980, 1531268040, 1531268100, 1531268160, 1531268220, 1531268280,
1531268340, 1531268400, 1531268460, 1531268520, 1531268580, 1531268640,
1531268700, 1531268760, 1531268820, 1531268880, 1531268940, 1531269000,
1531269060, 1531269120, 1531269180, 1531269240, 1531269300, 1531269360,
1531269420, 1531269480, 1531269540, 1531269600, 1531269660, 1531269720,
1531269780, 1531269840, 1531269900, 1531269960, 1531270020, 1531270080,
1531270140, 1531270200, 1531270260, 1531270320, 1531270380, 1531270440,
1531270500, 1531270560, 1531270620, 1531270680, 1531270740, 1531270800,
1531270860, 1531270920, 1531270980, 1531271040, 1531271100, 1531271160,
1531271220, 1531271280, 1531271340, 1531271400, 1531271460, 1531271520,
1531271580, 1531271640, 1531271700, 1531271760, 1531271820, 1531271880,
1531271940, 1531272000, 1531272060), class = c("POSIXct", "POSIXt"
), tzone = "UTC")), row.names = 70088:70175, class = "data.frame")
Code: Alles auswählen
DF2 <- dput(DF2)
structure(list(Verschiebung = c(0L, 0L, 2L, 2L, 6L, 7L), date = structure(c(17683,
17692, 17723, 17724, 17797, 17827), class = "Date")), na.action = structure(c(`5` = 5L,
`6` = 6L, `24` = 24L, `36` = 36L, `38` = 38L, `45` = 45L, `49` = 49L,
`64` = 64L, `65` = 65L, `71` = 71L, `73` = 73L, `75` = 75L, `78` = 78L,
`81` = 81L, `83` = 83L, `89` = 89L, `91` = 91L, `94` = 94L, `97` = 97L,
`98` = 98L, `99` = 99L, `100` = 100L, `101` = 101L, `102` = 102L,
`103` = 103L), class = "omit"), row.names = c(1L, 2L, 3L, 4L,
7L, 8L), class = "data.frame")
Folgendes habe ich bis jetzt probiert:
Code: Alles auswählen
for(i in 1:nrow(DF1)){
DF1$newDatetime[i] <- format(strptime(DF1$datetime,format ="%Y-%m-%d %H:%M:%S")-(DF2$Verschiebung*60)[
which( DF2$date >= DF1$date[i] &
DF2$date <= DF1$date[i])])
}
Über jede Hilfe und Input bin ich dankbar. Gerne auch ohne for-loop, dass ich einen sehr großen df habe, wo es sicherlich schnellere Möglichkeiten gibt.
Liebe Grüße
Ilonia