Как найти разницу во времени (времени, затраченном на обработку файла) в R?

У меня есть данные журнала, он записывает дату и время начала и дату и время окончания.

Данные из файла журнала выглядят следующим образом: Предварительно подготовленные данные в Excel

Start_Date1 Start_Time1 Start_Millisecond1  Start_Date2 Start_Time2 Start_Millisecond2
29-11-2015  18:25:04    671 29-11-2015  18:40:05    275
29-11-2015  18:25:03    836 29-11-2015  18:40:04    333
10-11-2015  02:41:57    286 10-11-2015  02:51:52    690

Когда я загружаю данные в R с помощью Rstudio. Класс данных выглядит следующим образом.

Загруженные данные и их тип

Я использую приведенную ниже строку кода для преобразования даты в POSIXlt.

nov$Start.Date1<-as.POSIXlt(as.character(nov$Start.Date1), format="%d-%m-%Y")

nov <-read.csv(file = '././data/Data For R Nov CBEFF log.csv',header = TRUE,na.strings = FALSE,stringsAsFactors = FALSE)

str (nov $ Start.Time1)

nov $ Start.Date1 ‹-as.POSIXlt (as.character (nov $ Start.Date1), format ="% d-% m-% Y ")

nov $ Start.Time1 ‹-as.POSIXlt (as.character (nov $ Start.Time1), format ="% H:% M:% S ") nov $ Start.Time1‹ -format (nov $ Start.Time1, format = "% H:% M:% S")

nov $ Start.Date2 ‹-as.POSIXlt (as.character (nov $ Start.Date2), format ="% d-% m-% Y ")

nov $ Start.Time2 ‹-as.POSIXlt (as.character (nov $ Start.Time2), format ="% H:% M:% S ") nov $ Start.Time2‹ -format (nov $ Start.Time2, format = "% H:% M:% S")

**

> Я хочу подсчитать время, затраченное на выполнение, то есть> StartTime2-StartTime1

**

StartTime1 и StartTime2 теперь имеют тип данных chr.


person sandeep    schedule 25.02.2016    source источник
comment
Взгляните на lubridate пакет.   -  person Axeman    schedule 25.02.2016
comment
Я изучил это, но не смог получить именно то, что хотел ..   -  person sandeep    schedule 25.02.2016
comment
У вас гораздо больше шансов получить помощь, если вы покажете нам, что вы пробовали и почему это не сработало. Вы также должны предоставить минимальный воспроизводимый пример вместо снимков экрана.   -  person Axeman    schedule 25.02.2016


Ответы (1)


Это должно помочь. Если бы вы разместили данные (воспроизводимый пример), я мог бы проверить код. Таким образом, в нем могут быть опечатки.

nov<-read.delim("sample.csv", sep=";", dec=".")
nov$start1<-as.POSIXlt(paste(nov$Start_Date1,nov$Start_Time1 ,sep=" "), format="%d-%m-%Y %H:%M:%S")
nov$start2<-as.POSIXlt(paste(nov$Start_Date2,nov$Start_Time2 ,sep=" "), format="%d-%m-%Y %H:%M:%S")
nov$timediff<-as.numeric(difftime(nov$start2,nov$start1, unit="secs"))*1000+(nov$Start.Milisecond2-nov$Start.Milisecond1)

Это дает вам время в миллисекундах

РЕДАКТИРОВАТЬ Подтверждено с помощью выборки данных. Имена переменных изменены с "Дата начала1" на "Дата_пуска1".

person Buggy    schedule 25.02.2016
comment
Startdate1 и Startdate2 - это просто даты, в которых нет времени ... столбец рядом с startdate1, который равен starttime1. мне нужно найти разницу в этом с Starttime2 следующий столбец для Startdate2 .. Я связал данные в вопросе - person sandeep; 25.02.2016
comment
Вот почему там есть операция вставки: D Это должно позаботиться о недостающем времени ... Что касается воспроизводимого примера: вы только что добавили снимки экрана (что приятно иметь), но у вас есть подмножество данных (например, dput или csv) будет более полезным. - person Buggy; 25.02.2016
comment
Я проверил ваши образцы данных. Помимо изменения названий, во второй строке допущена небольшая опечатка. Но теперь это работает. Конечно, могут быть более приятные решения, но это помогает. - person Buggy; 25.02.2016
comment
Какое значение возвращается paste(nov$Start_Date1,nov$Start_Time1 ,sep=" ")? Вы уверены, что это не проблема с именами ваших столбцов (потому что в вашем примере другие имена) - person Buggy; 25.02.2016
comment
Братан Все идеально. В коде нужно сделать одно небольшое исправление. Исправленный код. nov$timediff<-as.numeric(difftime(nov$Start2,nov$Start1,units = "secs"))+((nov$Start.Millisecond2-nov$Start.Millisecond1)/1000) Вместо умножения 1000 на секунды следует умножать на миллисекунды. Я проверил ответ, спасибо за ваше время и поддержку - person sandeep; 25.02.2016