2017-09-01 35 views
1

我有被讀取爲character值(是的,他們都應該是一樣的)日期一欄:如何從YYYY/MM/DD更改日期格式DD/MM/YYYY

str(df$date) 

$ date : chr "30/08/2017" "30/08/2017" "30/08/2017" "30/08/2017" 

我當時的值轉換爲Date格式:

str(df$date) 

$ date : Date, format: "2017-08-30" "2017-08-30" "2017-08-30" 

的問題是,我選擇使用,無論哪種方法,得到的日期總是YYYY/MM/DD格式,這是不是我想要的;他們應該是DD/MM/YYYY格式。

我嘗試:

df$date <- as.Date(df$date, format = "%d/%m/%Y") 
df$date <- strptime(df$date, format = "%d/%m/%Y") 
df$date <- as.POSIXct(df$date, format = "%d/%m/%Y") 

,他們都產生相同的格式。

我已經閱讀了許多類似的堆棧溢出帖子以及一些指南,並嘗試過像獲取和設置我的系統區域設置(英國),並且在這方面都是正確的。

我哪裏錯了?

+0

我相信你想'的strftime()','不strptime()'。 R結合了這些功能的文檔,所以它可能有點混亂。 – jdobres

+0

@jdobres這就是它! – MusTheDataGuy

+0

太好了。對於有類似問題的人,我已經將評論充實到了答案中。 – jdobres

回答

2

我嘗試:

df$date <- as.Date(df$date, format = "%d/%m/%Y") 
df$date <- strptime(df$date, format = "%d/%m/%Y") 
df$date <- as.POSIXct(df$date, format = "%d/%m/%Y") 

,他們都產生相同的格式。

R具有兩個非常類似命名的功能:strptime,它從字符串轉換爲日期數據,和strftime,它轉換日期成格式化的字符串。更糟糕的是,這兩個功能的文檔是結合在一起的,因此可能很難保持其用途。在這種情況下,你想要strftime

+1

我添加了從op的報價,因爲在第一次閱讀時,我曾以爲它並沒有真正回答這個問題。 – Frank

1

您還可以使用format

date = c("30/08/2017", "30/08/2017", "30/08/2017", "30/08/2017") 
date <- as.Date(date, format = "%d/%m/%Y") 
# > date 
# [1] "2017-08-30" "2017-08-30" "2017-08-30" "2017-08-30" 

date = format(date, "%m/%d/%Y") 
# > date 
# [1] "08/30/2017" "08/30/2017" "08/30/2017" "08/30/2017" 

假作character類:

# > class(date) 
# [1] "character"