【问题标题】:R writing time intervals using lubridate package in an Excel file using XLConnectR使用XLConnect在Excel文件中使用lubridate包写入时间间隔
【发布时间】:2018-08-10 13:27:10
【问题描述】:

我需要评估 R 中的时间间隔,然后将间隔写在 Excel 表中。为了评估时间间隔,我使用 lubridate 包并将数据写入 excel 文件,我更喜欢 XLConnect 包。以下是第一部分的简化示例:

library(lubridate)    

a <- now()

b <- a + hours(2)

i <- interval(a, b)

j <- as.period(i)

j
[1] "2H 0M 0S"

这正是我希望在我的 Excel 表中看到的内容。以下位写入数据(在本例中为j)

library(XLConnect) 

wb <- loadWorkbook("example.xlsx", create = TRUE)

createSheet(wb, name = "time_interval")

writeWorksheet(wb, j, sheet = "time_interval")

saveWorkbook(wb)

但是,当您检查 excel 表时,您会看到 j 的值是 7200。 即 2*60*60 秒。这意味着它已被转换为秒。这不是我想要的。 我希望看到的正是“2H 0M 0S”,它是 R 返回的结果,对读者来说更有意义。

有没有办法做到这一点?

【问题讨论】:

    标签: r excel lubridate xlconnect


    【解决方案1】:

    如果您将值转换为字符串,我认为它会得到您想要的。

    a <- now()
    b <- a + hours(2)
    i <- interval(a, b)
    j <- as.period(i)
    

    j的结构很复杂:

    str(j)
    Formal class 'Period' [package "lubridate"] with 6 slots
      ..@ .Data : num 0
      ..@ year  : int 0
      ..@ month : int 0
      ..@ day   : int 0
      ..@ hour  : int 2
      ..@ minute: int 0
    

    您可以通过转换为字符串来简化:

    j <- as.character(j)
    

    然后像在上面的示例中那样保存它。结果以文本形式存储在 excel 文件中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-03
      相关资源
      最近更新 更多