Использование R для анализа задержек автобусов с использованием разницы между временем и расписанием - PullRequest
0 голосов
/ 21 января 2019

У меня проблема с эссе.

У меня есть фрейм данных с автобусными остановками, датой и временем, когда он прибыл на автобусную остановку, у меня нет данных GPS, он направляется через GPS-сигнал, отправляемый каждые 30 секунд, но он использует автобусную остановку id, пока он не достигнет нового, среди других полей, которые, возможно, не важны для этого вопроса.

Затем я разделил столбцы даты и времени на отдельные столбцы с помощью команды:

Hours <- format(as.POSIXct(strptime(x$xcol,"%d-%m-%Y %H:%M:%S",tz="")) ,format = "%H:%M")

Я смог разделить их, но они как класс персонажей. Затем я загрузил таблицу фактического времени шины, и она загружается как POSIXct, и она приносит дату и час, а мне нужны только часы. А потом я хотел сделать что-то вроде разного времени или что-то в этом роде.

Example:

    df2$DATA_TRAMA
       [1] 25-1-2010 07:37:26  25-1-2010 07:38:24  25-1-2010 07:39:56  25-1-2010 07:41:45  25-1-2010 07:42:36 
       [6] 25-1-2010 07:43:26  25-1-2010 07:44:15  25-1-2010 07:45:44  25-1-2010 07:46:57  25-1-2010 07:47:47 
      [11] 25-1-2010 07:49:04  25-1-2010 07:50:15  25-1-2010 07:51:46  25-1-2010 07:52:27  25-1-2010 07:54:22 
      [16] 25-1-2010 07:55:09  25-1-2010 07:57:12  25-1-2010 08:00:07  25-1-2010 08:01:11  25-1-2010 08:02:45 
      [21] 25-1-2010 08:06:38  25-1-2010 08:13:33  25-1-2010 08:17:55  25-1-2010 08:19:42  25-1-2010 08:20:40 
      [26] 25-1-2010 08:22:46  25-1-2010 08:25:35  25-1-2010 08:26:17  25-1-2010 08:28:01  25-1-2010 08:29:42 

Выше приведен результат для столбца даты и времени, который я хочу разделить, потому что меня больше всего интересует только время

Чтобы разделить их, я использую команды:

Hours <- format(as.POSIXct(strptime(df2$DATA_TRAMA,"%d-%m-%Y %H:%M:%S",tz="")) ,format = "%H:%M")
#output "15:44" "23:24" "19:15" "20:52" "07:46" "01:55"

Dates <- format(as.POSIXct(strptime(df2$DATA_TRAMA,"%d-%m-%Y %H:%M",tz="")) ,format = "%d-%m-%Y")
#output "27/27/2015" "23/23/2015" "31/31/2015" "20/20/2015" "23/23/2015" "31/31/2015"

df2$Dates <- Dates
df2$Hours <- Hours

И класс, как кажется, персонаж.

str(df2$Dates)
 chr [1:1088222] "25-01-2010" "25-01-2010" "25-01-2010" "25-01-2010" "25-01-2010" "25-01-2010" ...

Но я хочу, чтобы он был POSIXct или подобным, чтобы применять разности и видеть разницу во времени, чтобы увидеть, какова была задержка.

Что касается расписания, у меня есть фрейм данных только для того, который уже импортирован как POSIXct

str(horidat)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   75 obs. of  23 variables:
 $ CORD4: POSIXct, format: "1899-12-31 06:25:00" "1899-12-31 06:45:00" "1899-12-31 07:00:00" ...
 $ PRL8 : POSIXct, format: "1899-12-31 06:26:00" "1899-12-31 06:46:00" "1899-12-31 07:01:00" ...
 $ PRDJ2: POSIXct, format: "1899-12-31 06:28:00" "1899-12-31 06:48:00" "1899-12-31 07:03:00" ...
 $ SCAT1: POSIXct, format: "1899-12-31 06:29:00" "1899-12-31 06:49:00" "1899-12-31 07:04:00" ...

Но для фрейма данных хоридата (расписания) я хотел, чтобы у него было только время без смены класса. Проблема в том, что я знаю, как это сделать только так, как описано выше, что также превращается в характер.

После этого я хотел бы увидеть разницу между временами, чтобы увидеть задержку. Но чтобы сделать это, они оба должны быть в том же формате, верно? Я думаю, что для использования функции difftime они должны быть POSIXct правильно?

Когда я пытаюсь преобразовать один из них, я получаю следующие ошибки:

df2$Hours<-as.POSIXct(df2$Hours)
Error in as.POSIXlt.character(x, tz, ...) : 
  character string is not in a standard unambiguous format

Моя проблема заключается в том, чтобы преобразовать эти переменные в правильный формат, чтобы я мог использовать их всякий раз, когда я пытаюсь вычислить разницу между временами и, таким образом, задержками.

Кто-нибудь знает, как я мог бы преодолеть эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...