2015-09-21 89 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