我的数据框中包含YYYY / MM格式的日期列,因子类,我希望将其转换为日期类。例如。 2000/01 - > 2000年1月
我注意到as.Date()
无法处理没有day组件的日期格式。我尝试使用as.yearmon()
包中的zoo
函数。
library('zoo')
as.yearmon(factor("2000-01")) # It works with YYYY-MM format
# [1] "Jan 2000"
as.yearmon(factor("2000/01"))
# [1] NA
as.yearmon(factor("2000/01"),"%y/%m")
# [1] NA
我正在寻找能够转变factor("2000/01") to "Jan 2000"
的功能。任何帮助都将不胜感激。
答案 0 :(得分:1)
如果# Generate 10 "YYYY/MM"
n <- 10
our_dates <- paste(sample(1000:2000, n), sample(11:12, n, replace = TRUE), sep = "/")
our_dates
[1] "1027/12" "1657/12" "1180/11" "1646/12" "1012/12" "1684/12" "1693/11" "1835/11"
[9] "1916/11" "1073/12"
# Dirty fix, add a "day of month" to our dates
our_dates <- paste0(our_dates, "/01")
our_dates
[1] "1027/12/01" "1657/12/01" "1180/11/01" "1646/12/01" "1012/12/01" "1684/12/01"
[7] "1693/11/01" "1835/11/01" "1916/11/01" "1073/12/01"
# Format as dates
x <- as.Date(our_dates,"%Y/%m/%d")
# Now print out in your fromat:
format(x, format = "%b %Y")
[1] "Dec 1027" "Dec 1657" "Nov 1180" "Dec 1646" "Dec 1012" "Dec 1684" "Nov 1693"
[8] "Nov 1835" "Nov 1916" "Dec 1073"
出现问题,月份日期不存在,那么就您的目的而言,您可以在任何一天暂时提供它:
{{1}}