Faktor in Zeit umwandeln

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
Effigy
Beiträge: 35
Registriert: Di Nov 26, 2019 11:44 am

Faktor in Zeit umwandeln

Beitrag 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

Code: Alles auswählen

df$time <- chron(times = df$time, format "h:m")
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!
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Faktor in Zeit umwandeln

Beitrag von Athomas »

Die anderen Lösung hatten strings mit dem format "hh:mm:ss" also mit Sekunden.
Dann ergänze doch ":00" Sekunden :shock: !
Effigy
Beiträge: 35
Registriert: Di Nov 26, 2019 11:44 am

Re: Faktor in Zeit umwandeln

Beitrag 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"
>
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Faktor in Zeit umwandeln

Beitrag 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
Effigy
Beiträge: 35
Registriert: Di Nov 26, 2019 11:44 am

Re: Faktor in Zeit umwandeln

Beitrag von Effigy »

Ok, sieht doch ganz gut aus :D

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
Effigy
Beiträge: 35
Registriert: Di Nov 26, 2019 11:44 am

Re: Faktor in Zeit umwandeln

Beitrag 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
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Faktor in Zeit umwandeln

Beitrag von Athomas »

Gibt es denn kein package bzw. keine funktion, die das forat hh:mm handlen kann?
Was ist für Dich "handeln"?
Effigy
Beiträge: 35
Registriert: Di Nov 26, 2019 11:44 am

Re: Faktor in Zeit umwandeln

Beitrag 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
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Faktor in Zeit umwandeln

Beitrag 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!
Antworten