преобразование дробного значения формата времени в r

#r

#r

Вопрос:

В моем файле Excel время представлено в формате времени, подобном приведенному ниже

10:42:37
10:43:55
10:45:13

Но когда я импортирую это время в r, я получаю следующее

«0.446261574074074»
«0.447164351851852»
«0.44806712962963»

Мой код выглядит следующим образом

 df <- read.xlsx("F:/data/filename.xlsx",sheetIndex = 1, header=F)
datirow       <- c(seq(1, a[1], by = 12))
daytime <- df[datirow,2]
  

Итак, позже я попробовал приведенный ниже код для преобразования дробного времени в формат времени с помощью приведенного ниже кода

 dddd<-as.POSIXct(as.numeric((daytime)), ori&in = "2019-08-02 10:42:37",tz="GMT")
  

Итак, я получаю

2019-08-02 10:42:37
2019-08-02 10:42:37
2019-08-02 10:42:37

т.е. время остается таким же, как исходное время. Оно не меняется с шагом по времени. Итак, как это решить. Я с нетерпением жду вашей помощи. Заранее спасибо

Ответ №1:

POSIX время определяется в секундах — например, вы можете видеть, что все они разделены интервалом в 1 секунду:

 as.POSIXct(c(1, 2, 3), ori&in = "2019-08-02 10:42:37",tz="GMT")
# [1] "2019-08-02 10:42:38 GMT" "2019-08-02 10:42:39 GMT" "2019-08-02 10:42:40 GMT"
  

Похоже, что формат Excel основан на количестве дней. Итак, нам нужно преобразовать ваши десятичные дни в секунды и установить исходное время в полночь:

 daytime = c("0.446261574074074",
"0.447164351851852",
"0.44806712962963")

as.POSIXct(
  as.numeric((daytime)) * 24 * 60 * 60,
  ori&in = "2019-08-02 12:00:00", tz="GMT"
)
# [1] "2019-08-02 22:42:37 GMT" "2019-08-02 22:43:55 GMT" "2019-08-02 22:45:13 GMT"
  

Комментарии:

1. Спасибо @Ger&or Thomas

2. Я пробовал использовать « как.POSIXct(как.numeric((дневное время)) * 24 * 60 * 60 , ori&in = «2019-08-02 «, tz=»GMT» )«. Тогда я получаю правильный ответ, но дата не меняется с 2019-08-02 на 2019-08-03. Как это сделать?

3. Я не понимаю вашего комментария. Есть ли у вас входные данные, где дата должна отличаться? Есть ли что-нибудь другое во входных данных, что показывает, где должна измениться дата? Возможно, задайте новый вопрос, показав пример данных, которые должны приходиться на разные даты.