2017-03-10 3 views
1

Ich habe eine Variable, die eine Liste der Zeit istConvert Zeit fraktioniert zweite

t <- c("00:01:09.25", "00:01:25.24") 

Ich möchte sie in Sekundenbruchteilen konvertieren, so dass es numerisch ist und ich kann Korrelation zwischen t und anderen Variablen tun. Wenn t in ein POXITlc-Objekt konvertiert wird, kann ich Subtraktion oder andere Operationen an t durchführen, aber wenn ich ein POXITlc-Objekt mit einer kontinuierlichen Variablen korreliere, erscheint ein Fehler: x ist kein numerischer Vektor.

Deshalb habe ich t in Sekundenbruch umwandeln möchten:
00: 01: 09,25 = 01 * 60 * 100 + 09 * 100 + 25 = 6925

Antwort

1

Verwenden Sie die Funktion strsplit aufzuspalten basierend auf „: "

x<-"00:01:09.25" 
y<-as.numeric(unlist(strsplit(x,":"))) 
y[1]*60*60*100+y[2]*60*100+y[3]*100 #desired output 

verwenden lapply dies von Strings auf einem Vektor anzuwenden:

t <- c("00:01:09.25", "00:01:25.24") 
unlist(lapply(strsplit(t,":"), function(x) as.numeric(x[1])*60*60*100+ 
as.numeric(x[2])*60*100+as.numeric(x[3])*100)) 
1

Wir verwenden lubridate

library(lubridate) 
100*period_to_seconds(hms(t)) 
#[1] 6925 8524 
Verwandte Themen