2013-02-25 52 views
3

客戶向我發送了Excel文件,日期格式爲例如3/15/2012 3月15日。我將此文件保存爲.csv文件,然後使用as.date格式爲m/d/y的日期爲R

camm$Date <- as.Date(camm$Date, "%m/%d/%y") 

但是這給了我值從2020年開始!

我試着重新格式化原始csv文件中的日期,以便它們是例如2013年3月14日,但無法這樣做。

任何幫助as.Date通話讚賞

+5

你試過大寫'%Y'嗎? – A5C1D2H2I1M1N2O1R2T1 2013-02-25 17:39:32

回答

7

利用資本Y代替。這應該做的伎倆:

> as.Date("3/15/2012", "%m/%d/%Y") 
[1] "2012-03-15" 

從幫助文件的例子可以實現當年度滿指定你應該使用%Y例如否則%y

> dates <- c("02/27/92", "02/27/92", "01/14/92", "02/28/92", "02/01/92") 
> as.Date(dates, "%m/%d/%y") 
[1] "1992-02-27" "1992-02-27" "1992-01-14" "1992-02-28" "1992-02-01" 

你可以看到,在您的示例年格式是2012年,那麼你應該使用%Y,在另一個例子中(取自as.Date幫助文件)年格式是92,然後使用%y是正確的方法。有關更多詳細信息,請參閱as.Date

2

您也可能會給一個嘗試的lubridate包,如果你不希望處理:)

> library(lubridate) 
> parse_date_time('3/15/2012', 'mdy') 
1 parsed with %m/%d/%Y 
[1] "2012-03-15 UTC" 

PS:當然,我不鼓勵任何人使用任何額外的象形文字這個答案只是作爲一個替代(和快速記憶)解決方案發布在這裏

1

要完成圖片,您也可以嘗試最近推出的(2016-09)包anytime它利用Boost C + +庫:

anytime::anytime("3/15/2012") 
#[1] "2012-03-15 CET"