How to extract Month from date in R

后端 未结 5 1210
慢半拍i
慢半拍i 2020-12-05 09:40

I am using the lubridate package and applying the month function to extract month from date. I ran the str command on date field and I got

5条回答
  •  春和景丽
    2020-12-05 10:10

    ?month states:

    Date-time must be a POSIXct, POSIXlt, Date, Period, chron, yearmon, yearqtr, zoo, zooreg, timeDate, xts, its, ti, jul, timeSeries, and fts objects.

    Your object is a factor, not even a character vector (presumably because of stringsAsFactors = TRUE). You have to convert your vector to some datetime class, for instance to POSIXlt:

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

    There's also a convenience function dmy, that can do the same (tip proposed by @Henrik):

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

    Going even further, @IShouldBuyABoat gives another hint that dd/mm/yyyy character formats are accepted without any explicit casting:

    month(some_date)
    [1] 2 4
    

    For a list of formats, see ?strptime. You'll find that "standard unambiguous format" stands for

    The default formats follow the rules of the ISO 8601 international standard which expresses a day as "2001-02-28" and a time as "14:01:02" using leading zeroes as here.

提交回复
热议问题