Ich habe versucht, Verzögerung auf einer Spalte eines Datenrahmens zu verwenden, aber wenn Zeit beteiligt ist, wird es einfach nicht funktionieren. Ich habe Shift, Lag und Tlag ausprobiert.R Blei und Verzögerung (Verschiebung) mit Zeiten
Beispiel:
y = strptime(sprintf("%s:%s:%s", 4, 20, 10), "%H:%M:%S")
yy = strptime(sprintf("%s:%s:%s", 10, 20, 10), "%H:%M:%S")
lag(c(y,yy))
Fehler in format.POSIXlt (x, usetz = usetz): ungültige Komponente [[10]] in "POSIXlt" sollte 'Zone'
tlag(c(y,yy))
Fehler in n_distinct_multi (Liste (...), na.rm): Argument „Zeit“ fehlt, ohne Standard
shift(c(y,yy))
[[1]]
[1] NA 10
[[2]]
[1] NA 20
[[3]]
[1] NA 4
[[4]]
[1] NA 4
[[5]]
[1] NA 6
[[6]]
[1] NA 117
[[7]]
[1] NA 2
[[8]]
[1] NA 184
[[9]]
[1] NA 1
[[10]]
[1] NA "BST"
[[11]]
[1] NA 3600
Ich habe keine Zeitdifferenzen will, ich will einfach den Wert aus der Zeile oben in meinem Datenrahmen, die ich dachte, war das, was liegt tat : "Lead und Lag sind nützlich für den Vergleich von Werten, die um eine Konstante versetzt sind (z. B. der vorherige oder nächste Wert) ". Die Zeit sollte nicht einmal von Bedeutung sein, sie sollte einfach das Numerische/Zeichen/Zeit von der vorherigen Position wählen. Wie repariere ich das oder gibt es eine andere Funktion, die das Äquivalent von dem was ich mache d‘- ich habe keine Schleifen einbeziehen will als die Geschwindigkeit wichtig ist und die Datenrahmen sind groß
Beispiel aus meinem Datenrahmen.
structure(list(sec = c(52, 53, 54, 55, 56, 57, 58, 59, 0, 1),
min = c(50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 51L, 51L),
hour = c(11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L
), mday = c(4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), mon = c(6L,
6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L), year = c(117L, 117L,
117L, 117L, 117L, 117L, 117L, 117L, 117L, 117L), wday = c(2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), yday = c(184L, 184L,
184L, 184L, 184L, 184L, 184L, 184L, 184L, 184L), isdst = c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), zone = c("BST", "BST",
"BST", "BST", "BST", "BST", "BST", "BST", "BST", "BST"),
gmtoff = c(NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_)), .Names = c("sec", "min", "hour", "mday", "mon",
"year", "wday", "yday", "isdst", "zone", "gmtoff"), class = c("POSIXlt",
"POSIXt"))
hinzufügen würde es besser sein, ein reproduzierbares Beispiel schreiben den Datenrahmen enthält, die Sie im Text erwähnen. Mein Verdacht ist, dass das, was Sie gerne tun würden, ziemlich geradlinig ist, mit einem sauberen Ansatz, der Mutate und Lag verwendet, aber im Moment ist es schwer zu sehen. – JanLauGe
Was ist die erwartete Ausgabe? – AK88
Nun, der Datenrahmen würde genauso funktionieren wie der obige Vektor, der einen Fehler statt der erwarteten "NA" anzeigt. 2017-07-04 04:20:10 BST "' – Olivia