将因子YYYY / MM转换为年月级

时间:2017-03-17 18:33:14

标签: r date posix zoo

我的数据框中包含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"的功能。任何帮助都将不胜感激。

1 个答案:

答案 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}}