使用R通过时间和时间表之间的差异来分析公交车延误

时间:2019-01-21 11:30:45

标签: r

我的论文有问题。

我有一个数据帧,上面有公共汽车站,到达公共汽车站的日期和时间,我没有GPS数据,它通过每30秒发送一次的GPS信号进行引导,但它使用公共汽车站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或类似名称,以便应用difftimes并查看时差以了解延迟是什么。

关于时间表,我有一个专用的数据框,已作为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" ...

但是对于horidat数据帧(时间表),我希望它也只具有时间而不更改类。问题是我只知道如何以与上述相同的方式进行操作,然后也变成了字符。

在那之后,我希望看到时间之间的差异,以便看到延迟。但是要做到这一点,它们必须采用相同的格式,对吗?我认为要使用功能difftime,它们必须是POSIXct吗?

当我尝试转换其中之一时,出现以下错误:

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

我的问题是将这些变量转换为正确的格式,以便每当我尝试计算时间之间的差异以及延迟时都可以使用它们。

有人知道我能解决这个问题吗?

0 个答案:

没有答案