R запись временных интервалов с использованием пакета lubridate в файл excel с помощью 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 и который был бы более значимым для читателя.

Есть ли способ этого добиться?

0
0
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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.

Другие вопросы по теме