从导入的CSV文件转换日期

时间:2015-12-10 15:26:28

标签: r

我正在从CSV文件导入时间序列数据,其中一个矢量/列是DD / MM / YYYY格式的日期。如果我选择字符串作为因子= True,则Vector类是字符或因子。我将导入的文件转换为数据框,然后运行以下命令:

 df$Date <- as.Date(df$Date , "%d/%m/%y")

我没有收到任何错误消息,但是日期都以YYYYMMDD格式搞砸了,所有YYYY都是2020年......

Before:
10/09/2009
11/09/2009
14/09/2009

After:
2020-09-10
2020-09-11
2020-09-14

2 个答案:

答案 0 :(得分:1)

当你应该是%Y时,你正在使用%y。 See the documentation here.

%Y 没有世纪的年份(00-99)。在输入时,值00到68的前缀为20和69到99乘以19 - 这是2004和2008 POSIX标准指定的行为,但他们也说'预计在未来的版本中,默认世纪是从两位数的年份将改变'。

%Y 与世纪的一年。请注意,虽然原始公历中没有零,但ISO 8601:2004将其定义为有效(解释为1BC):请参阅http://en.wikipedia.org/wiki/0_(year)。请注意,标准还规定,其日历中的1582年之前的年份应仅在有关各方同意的情况下使用。

尝试再次运行代码,以便之前的任何尝试都不会修改数据框,但这次使用

 df$Date <- as.Date(df$Date , "%d/%m/%Y")

答案 1 :(得分:0)

@Heroka是对的。

如果你需要它,你也可以使用posixct对象(它们包含秒的信息)

试试这个:

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

如果您想要字符串中的日期和时间,可以尝试以下操作:

df$Date.time <- format(as.POSIXct(df$Date , format="%d/%m/%Y"),format="%Y-%m-%d %H:%M")

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