在r中转换格式为“2012 Week15”的日期

时间:2014-07-31 09:05:34

标签: r

我有一个数据框,其中包含标题中指定格式的日期列,我想知道将它们转换为标准日期格式的简单方法,即" yyyy-mm- DD"或类似的。

所以目前我的日期列格式为

2012 Week15
2012 Week12
2012 Week16
2012 Week25
2012 Week4

到目前为止,我已经尝试过:

df$Date<-gsub("Week","",df$Date)
con.date<-as.Date(df$Date, format="%Y %V")
df<-data.frame(date=con.date,df[,columns excluding the date column]) 

df$Date<-as.Date( df$Date,"%Y %V" )

但这些只是每年产生相同的日期,即

2012-07-31  
2012-07-31  
2012-07-31  

出于某种原因。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

目前我编写的函数只将长度为1的向量转换为所需的输出。我把01-01到01-07算作第1周等等。对于第1周,我将输出一周的第一个日期。

WeekToDate <- function(Date) {
    install.packages("Hmisc")
    library(Hmisc)
    year <- substr(Date, 1,4)
    week <- substring(Date, 10)
    date1 <- as.Date(paste(year, "-01-01", sep=""), format="%Y-%m-%d")
    Date.list <- seq(date1, date1+yearDays(date1), by="day")
    data <- data.frame(Date.list)
    data$Week <- as.numeric(format(data$Date.list, "%U"))
    data <- data[!duplicated(data$Week),]
    output <- data[data$Week==week,]$Date.list
    return(output)
}

输出

 > WeekToDate("2013 Week15")
Installing package into ‘D:/Documents/R/win-library/3.0’
(as ‘lib’ is unspecified)
Warning: package ‘Hmisc’ is in use and will not be installed
[1] "2013-04-14"