Я использую R 3.5.0 в Windows 10.
У меня есть фрейм данных, который импортируется с использованием library(openxls)
read.xls("....")
.Он имеет 100 000 строк, и часть его выглядит как
S.No Start.DateEnd.Date Generation unitout timediff
7850 42907.76 42907.77 436.158469 INSERVICE 15
7851 42907.77 42907.78 443.302793 INSERVICE 15
7852 42907.78 42907.79 437.728683 INSERVICE 15
7853 42907.79 42907.80 390.832887 INSERVICE 15
7854 42907.80 42907.81 338.917658 INSERVICE 15
7855 42907.81 42907.82 300.056018 INSERVICE 15
7856 42907.82 42907.83 266.430064 INSERVICE 15
7857 42907.83 42907.84 248.952525 INSERVICE 15
7858 42907.84 42907.85 212.913333 INSERVICE 15
7859 42907.85 42907.86 18.523060 INSERVICE 15
7860 42907.86 42907.88 1.355428 OUTOFSERVICE 15
7861 42907.88 42907.89 1.355428 OUTOFSERVICE 15
7862 42907.89 42907.90 1.355428 OUTOFSERVICE 15
7863 42907.90 42907.91 1.355428 OUTOFSERVICE 15
7864 42907.91 42907.92 1.355428 OUTOFSERVICE 15
7865 42907.92 42907.93 1.355428 OUTOFSERVICE 15
7866 42907.93 42907.94 1.355428 OUTOFSERVICE 15
7867 42907.94 42907.95 1.355428 OUTOFSERVICE 15
7868 42907.95 42907.96 1.355428 OUTOFSERVICE 15
7869 42907.96 42907.97 1.355428 OUTOFSERVICE 15
7870 42907.97 42907.98 1.355428 OUTOFSERVICE 15
. Я хотел бы обобщить это, чтобы дать мне фрейм данных в форме
1 DateTime1(42907.76) DateTime2(42907.86) INSERVICE TIMEDIFF
2 DateTime2(42907.86) DateTime3(42907.98) OUTOFSERVICE TIMEDIFF
3 DateTime3(42907.98) DateTime4(...) INSERVICE TIMEDIFF
, где каждый раз, когда статус изменяетсяОБСЛУЖИВАНИЕ НА АУТОФСЕРВИСе фиксирует дату начала и дату окончания.В основном, я хочу знать, с какой даты + время, до какой даты + время было в обслуживании и вне обслуживания суммировано в кадре данных.В приведенном выше примере DateTime1 будет 42907.76, а DateTime2 будет 42907.86, поскольку после этого он выходит из строя.Точно так же DateTime2 будет 42907.86 - 42907.98.Так на ..
Я пытался создать флаг, чтобы решить его, но я не смог создать фрейм данных, поэтому я не прикрепил код здесь.Я предпочел бы использовать простое для понимания решение с хорошей логикой, чем пакеты, которые делают все в бэкэнде.
PS Дополнительная проблема - преобразование формата Excel Time в стандартный формат% Y% m% D% H% M.Я прочитал несколько потоков на SO, и я попытался сделать as.posixCT, as.date и т. Д., Но либо он меняется на NA, либо выдает ошибку.