我正在从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
答案 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")