我有日志数据,它记录开始日期时间和结束日期时间戳。
日志文件中的数据如下所示 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中时。数据类如下所示。
我使用下面的代码行将日期转换为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&lt; -as.POSIXlt(as.character(nov $ Start.Date1),format =“%d-%m-%Y”)
nov $ Start.Time1&lt; -as.POSIXlt(as.character(nov $ Start.Time1),format =“%H:%M:%S”) nov $ Start.Time1&lt; -format(nov $ Start.Time1,format =“%H:%M:%S”)
nov $ Start.Date2&lt; -as.POSIXlt(as.character(nov $ Start.Date2),format =“%d-%m-%Y”)
nov $ Start.Time2&lt; -as.POSIXlt(as.character(nov $ Start.Time2),format =“%H:%M:%S”) nov $ Start.Time2&lt; -format(nov $ Start.Time2,format =“%H:%M:%S”)
**
**
StartTime1和StartTime2现在是chr数据类型。
答案 0 :(得分: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)
这为您提供以毫秒为单位的时间
修改强> 验证样本数据。变量名称已从“Start.Date1”更改为“Start_Date1”