2015-09-02 1 views
2

J'ai une entrée de date comme celui-ci (actuellement la classe de caractères):R Changer de date AA-MM-JJ hh: mm à temps depuis l'origine (Days.Seconds)

input=c("2013-05-08 11:20:10", "2013-05-08 11:21:09") 

et que vous voulez avoir une sortie comme ceci:

output=c(127.472338, 127.473032) 

Quelle est l'heure depuis l'origine (2013-01-01 00:00:00) en jours et secondes.

Auparavant, je les données dans le format de sortie et reconverties au format d'entrée à l'aide:

temp=as.POSIXlt(output*24*3600,origin='2013-01-01 00:00:00', tz="Etc/GMT+0") 

Comment puis-je réécrire ce pour que je sois la sortie désirée? Merci d'avance.

+1

Peut-être 'as.numeric (difftime (as.POSIXlt (entrée), as.POSIXlt ('01.01.2013 00:00:00'))) ' – akrun

Répondre

4

utilisation difftime (ou -):

> difftime(as.POSIXct(input), as.POSIXct("2013-01-01")) 
Time differences in days 
[1] 127.4307 127.4314 
> as.POSIXct(input) - as.POSIXct("2013-01-01") 
Time differences in days 
[1] 127.4307 127.4314 
+0

Vous n'avez même pas besoin de la partie' as.POSIXct': 'difftime (entrée," 2013-01-01 ", units =" days ")' fonctionne très bien. – nicola

+0

@nicola: bien que vrai, je ne suis pas un fan particulier de la conversion implicite de caractère à Date/POSIXt. –

+0

Et vous avez totalement raison. Je voulais juste souligner combien il est facile d'obtenir des résultats dans R. – nicola