9
votes

Format de temps de conversion à numérique avec r

Dans la plupart des cas, nous convertissons le temps numérique au format POSIXCT à l'aide de R. Cependant, si nous voulons comparer deux points de temps, nous préférerons le format de temps numérique. Par exemple, j'ai un format de date comme "2001-03-13 10:31:00", xxx

à l'aide de R, je veux la couvrir dans un chiffre numérique (par exemple, le temps julien ), peut-être quelque chose comme les secondes qui passent entre 1970-01-01 00:00:00 et 2001-03-13 10:31:00.

Avez-vous des suggestions?


Le calendrier Julian a débuté en 45 C.-C. (709 AUC) en tant que réforme du calendrier romain de Julius Caesar. Il a été choisi après consultation des sosigènes d'astronome d'Alexandrie et était probablement conçu pour se rapprocher de l'année tropicale (connue du moins depuis Hipparchus). Voir http://fr.wikipedia.org/wiki/julian_calendar


4 commentaires

Je n'ai pas bownvote, mais je soupçonne que cela a été fait à cause d'une incompatibilité insouciante entre votre entrée et votre sortie. Il semble possible que vous espérais simplement supprimer la ponctuation dans un vecteur de type de caractère et que vous vouliez: 20010313103100 éventuellement comme une valeur numérique mais à la moemnt, il est très peu clair.


Votre réponse est utile. Je vais réviser la question.


D'une manière générale, as.numeric est un bon premier endroit à transformer si vous souhaitez convertir quelque chose à, eh bien, un nombre. Avez-vous essayé cela?


bon rappelant. Merci.


4 Réponses :


10
votes

Si vous voulez simplement supprimer ":": "", "", et "-" d'un vecteur de caractère, cela suffira alors:

as.POSIXct(begin) < as.POSIXct(begin) +1
 #[1] TRUE


1 commentaires

ou plus généralement gsub ("[^ [: chiffre:]]]" ", commence) supprimera autre chose que le nombre.



7
votes

Sur la base de la question révisée, cela devrait faire ce que vous voulez:

begin <- "2001-03-13 10:31:00"
as.numeric(as.POSIXct(begin))


0 commentaires

1
votes

L'exemple de ? AS.posix code> aide donne xxx pré>

donc pour vous, il serait P>

as.numeric(as.POSIXct(strptime(begin, "%Y-%m-%d %H:%M:%S")))


0 commentaires

1
votes

Peut-être que cela pourrait également fonctionner:

library(lubridate)
...
df <- '24:00:00'

as.numeric(hms(df))


0 commentaires