Je lis une table et contient des chaînes décrivant les horodatages. Je veux juste convertir la chaîne à un type datetime intégré ...Comprendre les dates/heures (POSIXc et POSIXct) dans R
R> Q <- read.table(textConnection('
tsstring
1 "2009-09-30 10:00:00"
2 "2009-09-30 10:15:00"
3 "2009-09-30 10:35:00"
4 "2009-09-30 10:45:00"
5 "2009-09-30 11:00:00"
'), as.is=TRUE, header=TRUE)
R> ts <- strptime(Q$tsstring, "%Y-%m-%d %H:%M:%S", tz="UTC")
si je tente de stocker la colonne datetime dans le data.frame, je reçois une curieuse erreur:
R> Q$ts <- ts
Error in `$<-.data.frame`(`*tmp*`, "ts", value = list(sec = c(0, 0, 0, :
replacement has 9 rows, data has 5
mais si je passe par une représentation numérique tenue à l'data.frame, cela fonctionne ...
R> EPOCH <- strptime("1970-01-01 00:00:00", "%Y-%m-%d %H:%M:%S", tz="UTC")
R> Q$minutes <- as.numeric(difftime(ts, EPOCH, tz="UTC"), units="mins")
R> Q$ts <- EPOCH + 60*Q$minutes
toute aide à comprendre la situation?
Une autre chose intéressante à noter est que la longueur() d'un objet POSIXlt est toujours 9. Les longueurs des composants individuels, tels que $ min, augmente pour refléter le nombre d'horodatages à l'intérieur de l'objet. – Sharpie
une autre chose intéressante: j'ai utilisé le test pour examiner ce qui arrive à un'POSIXlt 'quand j'y ajoute un numéro et en fait le résultat est un'POSIXct'. ceci explique ce que j'observais en premier lieu. – mariotomo