如何从以字符形式给出的日期中提取“月”?

时间:2019-06-03 02:50:23

标签: r date

我必须从类似于以下格式的日期格式中提取月份:01-Dec-2016等。它不是标准日期格式,R不能像日期一样读取

我尝试在R上输入编码,它将其读取为日期,但它给了我一个错误术语

event_date<- as.Date(ACLED_combined$event_date)
  

charToDate(x)中的错误:     字符串不是标准的明确格式

作为最后的练习,我必须将数据分成几个季度,这取决于事件的年份和月份。为此,我首先需要将日期转换为月份。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

尝试使用lubridate软件包。

library(lubridate)

# creates a date object
dmy("01-Dec-2016")

# using date object, you can find the month - you have several options
lubridate::month(dmy("01-Dec-2016"))
lubridate::month(dmy("01-Dec-2016"), label = TRUE)
lubridate::month(dmy("01-Dec-2016"), label = TRUE, abbr = FALSE)

答案 1 :(得分:0)

可以通过调用as.POSXct()函数将字符串转换为数据时间对象。然后,您可以使用format()函数仅显示1到12的月份。下面是一个示例:

> datestring <- c('01-Dec-2016', '01-Jan-2017','01-Feb-2017')
> datetime <- as.POSIXct(datestring, format = '%d-%b-%Y')
> datetime
[1] "2016-12-01 CST" "2017-01-01 CST" "2017-02-01 CST"
> as.numeric(format(datetime, '%m'))
[1] 12  1  2