Seite 1 von 1
Faktor in Zeit umwandeln
Verfasst: Di Apr 07, 2020 10:09 am
von Effigy
Hallo zusammen,
ich krieg es nicht hin,einen Faktor in ein passenden Format (numeric?posixct?) umzuwandeln, so dass ich anschließend 10 min Intervalle zu 30 min Intervalle aufsummieren kann.
Code: Alles auswählen
id <- c(1,2,3)
time <- c("00:10", "00:20", "00:30")
df <- data.frame(id,time)
Ich benutze das chron package und folgenden code
und bekomme den Fehler, dass es einen "unrecognized string" gibt.
Dasselbe Problem habe ich, wenn ich die Faktoren in Character umwandel.
Code: Alles auswählen
time2<-c("00:00", "01:02", "09:30", "14:15")
x <- chron(times=time2, format = "h:m")
Dann bekomm ich den Fehler: Error in convert.times(times., fmt) : format h:m may be incorrect
Wo liegt das Problem? Ich hab es auch schon mit anderen Formaten probiert und in anderen Foren gesucht, aber nichts gefunden. Die anderen Lösung hatten strings mit dem format "hh:mm:ss" also mit Sekunden. Ich habe nur "hh:mm" Ich hoffe, ihr könnt mir helfen! Danke!
Re: Faktor in Zeit umwandeln
Verfasst: Di Apr 07, 2020 10:37 am
von Athomas
Die anderen Lösung hatten strings mit dem format "hh:mm:ss" also mit Sekunden.
Dann ergänze doch ":00" Sekunden

!
Re: Faktor in Zeit umwandeln
Verfasst: Di Apr 07, 2020 10:54 am
von Effigy
Hallo Athomas,
danke für deine Antwort. Hm ja das wäre eine Lösung, gibt es da denn nichts eleganteres?
Hier mal ein Ausschnitt meines Dataframe:
Code: Alles auswählen
> dede46 <- read.csv2(choose.files(), na.strings = "NoValue", header=T, stringsAsFactors = F)
> str (dede46)
'data.frame': 42192 obs. of 13 variables:
$ Datum : chr "01.01.2019" "01.01.2019" "01.01.2019" "01.01.2019" ...
$ Uhrzeit : chr "00:10" "00:20" "00:30" "00:40" ...
$ LT.2m : chr "7.7" "7.8" "7.7" "7.7" ...
$ rel..LF.2m: chr "95.1" "94.9" "95.1" "95.5" ...
$ LT.20cm : chr "7.3" "7.3" "7.3" "7.3" ...
$ BT.5cm : chr "5.7" "5.7" "5.7" "5.8" ...
$ BT.20cm : chr "5.2" "5.2" "5.2" "5.2" ...
$ BT.50cm : chr "5.3" "5.3" "5.3" "5.3" ...
$ WG.2.5m : chr "4.1" "4.7" "4.6" "5.4" ...
$ WR.2.5m : chr "252.7" "251.8" "250.6" "255.5" ...
$ G.Str..2m : int 0 0 0 0 0 0 0 0 0 0 ...
$ L.Druck : chr "1018.5" "1018.4" "1018.3" "1018.1" ...
$ Nied.1m : chr "0" "0" "0" "0" ...
> head(dede46$Uhrzeit)
[1] "00:10" "00:20" "00:30" "00:40" "00:50" "01:00"
>
Re: Faktor in Zeit umwandeln
Verfasst: Di Apr 07, 2020 11:10 am
von jogo
Hallo Effigy,
so unelegant sieht doch die Lösung von Athomas garnicht aus:
Code: Alles auswählen
library("chron")
df <- data.frame(id = c(1,2,3),
time = c("00:10", "00:20", "00:30"))
df$newtime <- times(paste0(df$time,":00"))
Gruß, Jörg
Re: Faktor in Zeit umwandeln
Verfasst: Di Apr 07, 2020 11:30 am
von Effigy
Ok, sieht doch ganz gut aus
Allerdings bekomme ich anstatt "24:00:00" nur "NA". Muss ich alle 24:00:00 in 00:00:00 umwandeln?
Code: Alles auswählen
[713] 22:50:00 23:00:00 23:10:00 23:20:00 23:30:00 23:40:00 23:50:00 <NA>
[721] 00:10:00 00:20:00 00:30:00 00:40:00 00:50:00 01:00:00 01:10:00 01:20:00
Re: Faktor in Zeit umwandeln
Verfasst: Di Apr 07, 2020 12:12 pm
von Effigy
Hab es mit gsub gemacht. Jetzt gehts. Danke. Gibt es denn kein package bzw. keine funktion, die das forat hh:mm handlen kann?
LG
Re: Faktor in Zeit umwandeln
Verfasst: Di Apr 07, 2020 12:24 pm
von Athomas
Gibt es denn kein package bzw. keine funktion, die das forat hh:mm handlen kann?
Was ist für Dich "handeln"?
Re: Faktor in Zeit umwandeln
Verfasst: Di Apr 07, 2020 1:52 pm
von Effigy
Na dass der string direkt als hh:mm erkannt und behandelt wird und man nicht erst den umweg mit paste machen muss.
LG
Re: Faktor in Zeit umwandeln
Verfasst: Di Apr 07, 2020 1:57 pm
von Athomas
Ich will Dich nicht veralbern, aber jetzt müsstest Du sagen, was für Dich "direkt" heißt.
Du kannst Dir natürlich jederzeit eine Funktion schreiben, die die Zwischenschritte ausführt und dadurch maskiert...
Was anderes machen die Packages auch nicht!