Conversion of date format %B %Y

妖精的绣舞 提交于 2021-02-07 17:10:35

问题


Can we somehow convert dates such as "November 2017", "December 2017" to date? I tried to import csv data, but received factor columns.

I tried the following code, but was not successful.

as.POSIXct(as.character(dat$Date), format = "%B %Y")

回答1:


A quick solution from lubridate package

dmy(paste("01", dat$Date))



回答2:


A POSIXct date needs the day of the month to be complete and valid.
You can add it to the date strings, then use the format "%B %Y %d" e.g. :

as.POSIXct(paste(as.character(dat$Date),"01"), format = "%B %Y %d")

BTW, when you import a csv you can set stringsAsFactors=FALSE (as argument of read.csv/read.table functions) to obtain characters instead of factors.




回答3:


The argument truncated does the job:

 library(lubridate)
 myd("November 2017", truncated = 1)
 # "2017-11-01"



回答4:


A proposition with the zoo package:

Sys.setlocale("LC_TIME","English")
#> [1] "English_United States.1252"
zoo::as.yearmon("November 2017", '%B %Y')
#> [1] "Nov 2017"
zoo::as.Date(zoo::as.yearmon("November 2017", '%B %Y'))
#> [1] "2017-11-01"
Sys.setlocale("LC_TIME","French")
#> [1] "French_France.1252"
zoo::as.yearmon("Novembre 2017", '%B %Y')
#> [1] "nov. 2017"

# Created on 2021-02-03 by the reprex package (v0.3.0.9001)

Regards,



来源:https://stackoverflow.com/questions/48996574/conversion-of-date-format-b-y

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!