当我在R中使用difftime并且我认为是正确的设置时,我仍然得到奇怪的时间值

问题描述

我从excel加载数据集

library(readxl)
df<-read_excel("excel_file.XLSX")

文件中有一个单独的日期列,为Posixct

str(df$datecol)

我也有一个time列,它在R中被加载为日期时间。要把它带回我身边,........

df$Timecol<-format(df$Timecol,"%H:%M:%s")

 

但是它变成一个字符。这是我认为问题所在的地方

str(STOP_DATA$`Stop Frisk Time`)

我认为这部分可以解决问题

df$merge_date_time<-as.POSIXct(paste(df$Datecol,df$TimeCol),format="%Y-%m-%d %H:%M:%s")

然后将日期和时间合并。我现在想做的是引用一个Poxict数据类型的时间戳列。

str(df$Timestamp)

然后我想找出它们之间的时差

df$TIME_SINCE <- difftime(df$Timestamp,df$merge_date_time,tz="UTC",units = "mins" )

但是我最终得到了没有意义的怪异数字。我猜想它是时间的Character数据类型。有人知道如何解决这个问题吗?

解决方法

我最终发现这可行

df$date_time<-paste(df$date,format(as.POSIXct(df$time),'%T'))

当脚本将文件更改为字符时,我从脚本中删除了下面的部分。

df$Timecol<-format(df$Timecol,"%H:%M:%S")

我接受了晦涩难懂的POSIXT默认值,其中包含正确的时间和奇数日期(1899-12-31),脚本所做的是用相应的df $ date列替换了1899-12-31。