【问题标题】:Converting dates from imported CSV file从导入的 CSV 文件转换日期
【发布时间】:2015-12-10 15:26:28
【问题描述】:

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

 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

【问题讨论】:

  • 请提供reproducible example.... 但是,我猜你需要“%Y”而不是“y”。我认为 YYYMMDD 是 R 中日期的默认格式。
  • 那么如果 YYYYMMDD 是默认格式,那对我的转换意味着什么?更改为“%Y”并没有改变结果..
  • 你确定吗?因为你覆盖了你的变量,你需要再次生成它。
  • 我的错,它在再次生成后工作。 Tnx。

标签: r


【解决方案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")

【讨论】:

    【解决方案2】:

    @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")
    

    【讨论】:

      猜你喜欢
      • 2013-03-13
      • 1970-01-01
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-16
      • 2017-10-11
      相关资源
      最近更新 更多