2015-09-21 54 views
0

我正面臨一個非常小的問題,但無法解決它。R中的日期轉換

當我導入具有日期的csv文件時,日期將以「%Y-%m-%d」格式顯示。但我希望它以「%d-%m-%Y」格式。我試過「as.Date」來改變它。但它不起作用。

的數據結構是這樣的導入後:

Date  Share_Val 
21/01/2015 20 
22/01/2015 19 
23/01/2015 21 
24/01/2015 23 
25/01/2015 26 

但是,當我被read.csv導入文件時,數據如下所示:

Date  Share_Val 
01/21/2015 20 
01/22/2015 19 
01/23/2015 21 
01/24/2015 23 
01/25/2015 26 

我試過lubridate 。但它沒有幫助。 Sam的結果正是我想要的。但是,當我嘗試以下,它不來

data$date<-format(as.Date(data$date,"%m/%d/%Y")) 

任何人都可以請給我任何建議嗎?

+4

你能否給出一個更精確的例子,就像你看到的輸入字符串? – Frank

+0

看包'lubridate' – RHA

+0

'格式(as.Date(「2015-09-21」),「%d-%m-%Y」)' – Whitebeard

回答

2

看看這是否有幫助。請注意0​​。如果您Date領域是一個因素,你將需要data$Date <- as.character(data$Date)第一

data <- data.frame(Date = c("21/01/2015", "22/01/2015", "23/01/2015", 
     "24/01/2015", "25/01/2015"), Share_Val=c(20, 19, 21, 23, 26), 
     stringsAsFactors=F) 

format(as.Date(data$Date, "%d/%m/%Y"), "%d-%m-%Y") 
[1] "21-01-2015" "22-01-2015" "23-01-2015" "24-01-2015" "25-01-2015" 
+0

非常感謝Sam!你的回答非常好。再次感謝。 – Beta

+0

不客氣。很高興這是有幫助的。 – Whitebeard

1

的評論太長。

我想你可能會誤解日期如何在R中工作。Date類的變量(或列)在內部存儲爲自1970-01-01以來的天數。當您打印Date變量時,它將使用%Y-%m-%d格式顯示。 as.Date(...)函數將字符轉換爲日期。該format=...參數控制字符串是如何解釋,結果未顯示方式,如:

as.Date("02/05/2015", format="%m/%d/%Y") 
# [1] "2015-02-05" 
as.Date("02/05/2015", format="%d/%m/%Y") 
# [1] "2015-05-02" 

所以在第一種情況下的字符串被解釋爲05二月,在第二個05月02日。請注意,在這兩種情況下,結果爲顯示(打印)在%Y-%m-%d格式。

+0

謝謝jlhoward!我沒有意識到這一點。即使不完全回答我的問題,這真的很有幫助。再次感謝。 – Beta