Estoy intentando transformar dos columnas en mi dataframe en la clase de tiempo 'buena' &, y hasta ahora no tuve mucho éxito con eso. Probé varias clases (timeDate, Date, timeSeries, POSIXct, POSIXlt) pero sin éxito. Tal vez solo estoy pasando por alto lo obvio y porque he intentado tantos enfoques que ya no sé qué es qué más. Espero que algunos de ustedes puedan arrojar algo de luz sobre dónde me equivoco.Cómo encontrar la fecha más alta (más reciente) y la más baja (anterior) [R]
Objetivo: Quiero calcular la diferencia entre dos fechas utilizando la fecha más temprana y la más reciente. Lo hice trabajando con head() y tail(), pero como esos valores no son necesarios, la fecha más temprana y la última en mis datos, necesito otra forma. (No puedo hacer que la ordenación de datos funcione, porque ordena los datos solo el día de la fecha.)
Segundo objetivo: Quiero convertir las fechas del formato diario (es decir, 8-12 -2010) a niveles semanales, mensuales y anuales (es decir, '49 -2010 ',' diciembre-10 'y solo' 2010 '). Esto se puede hacer con la configuración de formato (como "% d-% m-% y"). ¿Se puede hacer esto convirtiendo el data.frame en una clase de tiempo, y luego transformando la clase de tiempo en el formato correcto (8-12-2010 -> format ("% B-% y") -> 'december-10') , y luego transformando esa clase de tiempo en un factor con niveles para cada mes?
Para ambos objetivos, necesito convertir la fecha de alguna manera a una clase de tiempo, y aquí es donde tuve algunas dificultades.
Mi trama de datos es el siguiente:
> 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
He aquí un resumen de lo que he intentado:
> 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"
Los paquetes TimeDate tiene una función de 'rango', sin embargo, la conversión a la La clase de fecha funciona para una instancia individual, pero por alguna razón no para un marco de datos:
> 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"
En este momento, casi creo que es imposible de hacer, por lo que cualquier idea sería muy apreciada.
Saludos,
Se podría usar 'dput (tmpTimes4)' para proporcionar un uso conjunto de datos exacta en el código. – Marek
@Marek: ¡Gracias por responder! No sabía sobre dput, así que gracias por la propina. :) – Jura25