#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. Я не понимаю вашего комментария. Есть ли у вас входные данные, где дата должна отличаться? Есть ли что-нибудь другое во входных данных, что показывает, где должна измениться дата? Возможно, задайте новый вопрос, показав пример данных, которые должны приходиться на разные даты.