R中的日期转换


Date Transformation in R

我遇到了一个很小的问题,但不知何故无法解决。

当我导入具有日期的 csv 文件时,日期将以 "%Y-%m-%d" 格式出现。但我希望它采用 "%d-%m-%Y" 格式。我试过 "as.Date" 来改造它。但它不起作用。

导入后的数据结构如下:

1
2
3
4
5
6
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 导入文件时,数据如下所示:

1
2
3
4
5
6
Date        Share_Val
01/21/2015   20
01/22/2015   19
01/23/2015   21
01/24/2015   23
01/25/2015   26

我试过润滑。但它没有帮助。
山姆的结果正是我想要的方式。但是当我尝试以下操作时,它不会来

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

谁能给我一些建议?


看看这是否有帮助。注意 stringsAsFactors。如果您的 Date 字段是一个因素,您将需要 data$Date <- as.character(data$Date) first

1
2
3
4
5
6
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"


评论太长了。

我认为您可能误解了日期在 R 中的工作方式。类 Date 的变量(或列)在内部存储为自 1970 年 1 月 1 日以来的天数。当您打印 Date 变量时,它使用 %Y-%m-%d 格式显示。 as.Date(...) 函数将字符转换为日期。 format=... 参数控制如何解释字符串,而不是如何显示结果,如:

1
2
3
4
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"

因此,在第一种情况下,字符串被解释为 2 月 5 日,第二个是 5 月 2 日。请注意,在这两种情况下,结果都以 %Y-%m-%d 格式显示(打印)。