Comment trouver le plus haut (au plus tard) et la plus basse (la plus ancienne) date [R]

Je suis tenter de transformer deux colonnes dans mon dataframe de la "bonne" date & temps de classe, et jusqu'à maintenant n'ont pas beaucoup de succès avec elle. J'ai essayé différentes classes (timeDate, Date, timeSeries, POSIXct, POSIXlt) mais sans succès. Peut-être que je suis juste donnant sur l'évidence et parce que j'ai essayé tellement de nombreuses approches, je ne sais pas ce qu'il en est plus. J'espère que certains d'entre vous peuvent jeter quelque lumière sur l'endroit où je vais mal.

Objectif:
Je veux calculer la différence entre deux dates à l'aide de la première et la dernière date. J'ai eu ce travail avec head() et tail(), mais parce que ces valeurs ne sont pas nécessaires, la première et la dernière date de mes données, j'ai besoin d'une autre façon. (Je ne peux pas obtenir le tri des données pour travailler, parce qu'il trie les données uniquement le jour de la date.)

Deuxième but: je veux convertir les dates de format quotidien (c'est à dire 8-12-2010) hebdomadaire, mensuelle, annuelle et les niveaux (i.e. '49-2010', 'décembre-10", et à seulement '2010'). Cela peut être fait avec les paramètres de format (comme %d-%m-%y). Cela peut être fait avec de la conversion des données.cadre d'un temps de classe, et que la transformation de la timeclass dans le bon format (8-12-2010 -> format("%B-%y") -> 'december-10'), puis la transformation de ce temps de classe dans un facteur de niveaux pour chaque mois?

Pour ces deux objectifs, j'ai besoin de convertir les dateframe d'une certaine façon à un temps de classe, et c'est là que j'ai rencontré quelques difficultés.

Mon dataframe ressemble à ceci:

> tradesList[c(1,10,11,20),14:15] -> tmpTimes4
> tmpTimes4
   EntryTime ExitTime
1   01-03-07 10-04-07
10  29-10-07 02-11-07
11  13-04-07 14-05-07
20  18-12-07 20-02-08

Voici un résumé de ce que j'ai essayé:

> class(tmpTimes4)
[1] "data.frame"
> as.Date(head(tmpTimes4$EntryTimes, n=1), format="%d-%m-%y")
Error in as.Date.default(head(tmpTimes4$EntryTimes, n = 1), format = "%d-%m-%y") : 
do not know how to convert 'head(tmpTimes4$EntryTimes, n = 1)' to class "Date"
> as.timeDate(tmpTimes4, format="%d-%m-%y")
Error in as.timeDate(tmpTimes4, format = "%d-%m-%y") : 
unused argument(s) (format = "%d-%m-%y")
> timeSeries(tmpTimes4, format="%d-%m-%y")
Error in midnightStandard2(charvec, format) : 
'charvec' has non-NA entries of different number of characters
> tmpEntryTimes4 <- timeSeries(tmpTimes4$EntryTime, format="%d-%m-%y")
> tmpExitTimes4 <- timeSeries(tmpTimes4$ExitTime, format="%d-%m-%y")
> tmpTimes5 <- cbind(tmpEntryTimes4,tmpExitTimes4)
> colnames(tmpTimes5) <- c("Entry","Exit")
> tmpTimes5
Entry    Exit    
[1,] 01-03-07 10-04-07
[2,] 29-10-07 02-11-07
[3,] 13-04-07 14-05-07
[4,] 18-12-07 20-02-08
> class(tmpTimes5)
[1] "timeSeries"
attr(,"package")
[1] "timeSeries"
> as.timeDate(tmpTimes5, format="%d-%m-%y")
Error in as.timeDate(tmpTimes5, format = "%d-%m-%y") : 
unused argument(s) (format = "%d-%m-%y")
> as.Date(tmpTimes5, format="%d-%m-%y")
Error in as.Date.default(tmpTimes5, format = "%d-%m-%y") : 
do not know how to convert 'tmpTimes5' to class "Date"
> format.POSIXlt(tmpTimes5, format="%d-%m-%y", usetz=FALSE)
Error in format.POSIXlt(tmpTimes5, format = "%d-%m-%y", usetz = FALSE) : 
wrong class
> as.POSIXlt(tmpTimes5, format="%d-%m-%y", usetz=FALSE)
Error in as.POSIXlt.default(tmpTimes5, format = "%d-%m-%y", usetz = FALSE) : 
do not know how to convert 'tmpTimes5' to class "POSIXlt"
> as.POSIXct(tmpTimes5, format="%d-%m-%y", usetz=FALSE)
Error in as.POSIXlt.default(x, tz, ...) : 
do not know how to convert 'x' to class "POSIXlt"

La Heuredate paquets ont une fonction de "plage", toutefois, la conversion à la Date de la classe travaille pour une instance individuelle, mais pour une raison quelconque, pas pour un bloc de données:

> as.Date(tmpTimes4[1,1], format="%d-%m-%y")
[1] "2007-03-01"
> as.Date(tmpTimes4, format="%d-%m-%y")
Error in as.Date.default(tmpTimes4, format = "%d-%m-%y") : 
do not know how to convert 'tmpTimes4' to class "Date"

À ce point, j'ai failli croire que c'est impossible de le faire, de sorte que toute pensée serait très appréciée!

Ce qui concerne,

  • Vous pouvez utiliser dput(tmpTimes4) de fournir exacte dataset utiliser dans votre code.
  • Merci pour votre réponse! Je ne savais pas à propos de dput, donc merci pour l'astuce. 🙂
InformationsquelleAutor Jura | 2010-12-08