【问题标题】:What is the correct date format for writexlwritexl 的正确日期格式是什么
【发布时间】:2017-09-11 03:58:17
【问题描述】:

新的writexl 包的正确日期格式是什么?我在lubridate 日期上尝试过,生成的 Excel 电子表格包含yyyy-mm-dd 形式的字符串(即不是 Excel 日期)。

【问题讨论】:

    标签: r excel lubridate writexl


    【解决方案1】:

    writexl 包的目的本质上是创建 excel 文件格式的 R 表的镜像。因此,在导出到 excel 时,将数据采用通常的 R 日期/时间格式之一(如 as.Date、as.POSIXct 等)不会转换为从 YYYY-mm-dd 转换为 d/m/y 的日期格式.如果您希望它在 excel 文件中采用更标准的 excel 日期/时间格式,最好在导出之前使用 strftime() 函数进行转换,如下所示:

    require(writexl)
    
    write_xlsx(
      data.frame(date=strftime(c("2017-09-10","2017-09-11","2017-09-12"),"%d/%m/%y")),
      "~/Downloads/mydata.xlsx")
    

    输出(在 xlsx 文件中):

    date
    10/09/17
    11/09/17
    12/09/17
    

    编辑:

    如果您希望数据在新文件中后成为 Excel 日期格式,那么将 as.POSIXct() 添加到上述文件将确保这一点。

    【讨论】:

    • 你的意思是format( ... , "%d/%m/%y)?根据您的建议,我尝试了一些,但它们并不完全有效。总是字符串。
    • @lebelinoz - 如果它是一个字符串,它将在 Excel 文件中创建镜像。但是,如果您正在寻找一种在创建文件之前将 YYYY-mm-dd 转换为 d/m/y 的方法,我在上面的 strftime() 函数中包含了一种方法。
    • 我正在寻找一种在 Excel 中创建日期的方法,而不是看起来像日期的字符串。无法将日期作为实际日期导出到 Excel 中,对于使用 Office 产品的数据分析师来说是一个很大的挫败感。幸运的是,我想我已经找到了使用 as.POSIXct 的解决方案(请参阅我的答案)
    • (不过,我给了你的答案+1,因为你提到了它,我试过了,它奏效了:))
    • @lebelinoz - 我明白了。我以为您正在寻找一种让它自动转换格式的方法,我认为 as.POSIXct 不会这样做。但是,如果您只想将其存储为 Excel 日期类,那么是的,这将起作用。我将使用该新信息对我的答案进行编辑。
    【解决方案2】:

    当我使用 as.POSIXct 将我的日期转换为 POSIXct 日期时,它起作用了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-17
      • 1970-01-01
      • 2012-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多