2013-11-04 43 views
0

我有一个包含日期列的数据框。但是,我有一些日期格式化为另一种方式。如何将这些数据调整为单一日期格式。我该如何处理看起来如下的日期变量。更改数据帧列中的两种不同日期格式

df = data.frame(Date=c("5/1/13","8/1/13","9/1/13","Apr-10", 
       "Apr-11","Apr-12","Apr-13")) 

对于它的价值,我的数据真的看起来如下:

> str(dat) 
'data.frame': 425376 obs. of 27 variables: 
$ Date      : chr "Jan-10" "Jan-10" "Jan-10" "Jan-10" ... 

谢谢!

+1

您需要提供更多信息。在“'/'”日期,哪个号码分别对应年,月和日?在'''日期,这个数字是对应年份还是日期?你想对缺失的组件做出哪些猜测?请同时向我们展示您迄今已尝试的代码。 – Henrik

回答

2

基本上我会用lubridateparse_date_time来转换日期。

"%b-%y"格式不可能解析(as.Date,strptime也失败了)。我不得不添加一天将其转换为%d-%b-%y格式。在这里我的代码:

df$Date <- as.character(df$Date) 
format = guess_formats(df$Date,orders=c('dmy','my')) 
df$Date[format== "%b-%y"] <- paste(1,df$Date[format== "%b-%y"],sep="-") 
parse_date_time(df$Date,"dmy") 
[1] "2013-01-05 UTC" "2013-01-08 UTC" "2013-01-09 UTC" 
    "2010-04-01 UTC" "2011-04-01 UTC" "2012-04-01 UTC" "2013-04-01 UTC"