如何在 R 中找到时间差(处理文件所花费的时间)?
How to find the difference of time (Time taken to process a file) in R?
我有日志数据,它记录了开始日期时间和结束日期时间戳。
日志文件中的数据如下所示
Preapred data in 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
当我使用 Rstudio 将数据加载到 R 中时。 class 数据如下所示。
我正在使用下面的代码行将日期转换为 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 数据类型。
这应该可以解决问题。如果您发布了数据(可重现的示例),我可以检查代码。这样它可能会有一些错别字。
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)
这会以毫秒为单位为您提供时间
编辑
用样本数据验证。变量名称已从 "Start.Date1" 更改为 "Start_Date1"
我有日志数据,它记录了开始日期时间和结束日期时间戳。
日志文件中的数据如下所示 Preapred data in 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
当我使用 Rstudio 将数据加载到 R 中时。 class 数据如下所示。
我正在使用下面的代码行将日期转换为 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 数据类型。
这应该可以解决问题。如果您发布了数据(可重现的示例),我可以检查代码。这样它可能会有一些错别字。
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)
这会以毫秒为单位为您提供时间
编辑 用样本数据验证。变量名称已从 "Start.Date1" 更改为 "Start_Date1"