una ordenar mes manipulacion horas filtrar fechas fecha extraer año agrupar r lubridate

ordenar - Cómo extraer mes a partir de la fecha en R



manipulacion de horas en r (4)

Estoy usando el paquete lubridate y estoy aplicando la función del month para extraer el mes de la fecha. Ejecuté el comando str en el campo de fecha y obtuve

Factor w/ 9498 levels "01/01/1979","01/01/1980",..: 5305 1 1 1 1 1 1 1 1 1 ... > v1$Date<-month(v1$Date) Error in as.POSIXlt.character(as.character(x), ...) : character string is not in a standard unambiguous format

Aquí está un ejemplo de mi marco de datos

https://drive.google.com/file/d/0B6cqWmwsEk20Q2dHblhXZi14Wk0/edit?usp=sharing

No sé lo que estoy haciendo mal.


Ella es otro enfoque de R base :

De tu ejemplo: Alguna fecha:

Some_date<-"01/01/1979"

Le decimos a R: "Esa es una fecha"

Some_date<-as.Date(Some_date)

Extraemos el mes:

months(Some_date) output: [1] "January"

Finalmente, podemos convertirlo en una variable numérica:

as.numeric(as.factor(months(Some_date))) outpt: [1] 1


Puedes convertirlo en formato de fecha por

new_date<- as.Date(old_date, "%m/%d/%Y")}

desde new_date , puede obtener el mes por strftime() de strftime()

month<- strftime(new_date, "%m")

old_date<- "01/01/1979" new_date<- as.Date(old_date, "%m/%d/%Y") new_date #[1] "1979-01-01" month<- strftime(new_date,"%m") month #[1] "01" year<- strftime(new_date, "%Y") year #[1] "1979"


?month indica:

La fecha y la hora debe ser POSIXct, POSIXlt, Date, Period, chron, yearmon, yearqtr, zoo, zooreg, timeDate, xts, its, ti, jul, timeSeries y fts.

Su objeto es un factor, ni siquiera un vector de caracteres (probablemente debido a que stringsAsFactors = TRUE ). POSIXlt convertir su vector a alguna clase de fecha y hora, por ejemplo, a POSIXlt :

library(lubridate) some_date <- c("01/02/1979", "03/04/1980") month(as.POSIXlt(some_date, format="%d/%m/%Y")) [1] 2 4

También hay una función de conveniencia dmy , que puede hacer lo mismo (sugerencia propuesta por @Henrik):

month(dmy(some_date)) [1] 2 4

Yendo aún más lejos, @IShouldBuyABoat da otra pista de que los formatos de caracteres dd / mm / aaaa son aceptados sin ningún tipo de conversión explícita:

month(some_date) [1] 2 4

Para obtener una lista de formatos, consulte ?strptime . Encontrará que "formato estándar no ambiguo" significa

Los formatos predeterminados siguen las reglas de la norma internacional ISO 8601 que expresa un día como "2001-02-28" y una hora como "14:01:02" usando los ceros iniciales como aquí.


Sin la necesidad de un paquete externo:

Si su fecha está en el siguiente formato:

myDate = as.POSIXct("2013-01-01")

Luego para obtener el número del mes:

format(myDate,"%m")

Y para obtener la cadena del mes:

format(myDate,"%B")