R使用XLConnect在Excel文件中使用lubridate包编写时间间隔

时间:2018-08-10 13:27:11

标签: r excel lubridate xlconnect

我需要评估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返回的结果,对读者来说更有意义。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

如果您将值转换为字符串,我认为它将为您提供所需的内容。

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文件中。