我面临一个非常小的问题,但无论如何都无法解决它。
当我导入具有日期的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
我试过了rubridate。但它没有帮助。 Sam的结果正是我想要的。但是,当我尝试以下内容时,它不会出现
data$date<-format(as.Date(data$date,"%m/%d/%Y"))
有人可以给我任何建议吗?
答案 0 :(得分:2)
看看这是否有帮助。请注意stringsAsFactors
。如果您的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"
答案 1 :(得分:1)
评论太长了。
我认为你可能会误解Dates如何在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"
因此,在第一种情况下,字符串在5月2日的第二天被解释为05年2月。请注意,在这两种情况下,结果都是以%Y-%m-%d
格式显示(打印)。