计算通过ID

问题描述:

分组使用该代码的时间差:计算通过ID

idCol <- c('1','1','1','2','2','3','3') 
rowNumIdCol <- c('1','2','3','4','5','6','7') 
stepCol <- c('step1') 
step1Col <- c('30-12-2010:11.02', '31-12-2010:10.06', '05-01-2011:15.12','01-03-2017:09.00', '01-05-2017:09.00', '01-06-2017:09.00', '01-07-2017:09.00') 
mydata <- data.frame(idCol , rowNumIdCol , step1Col) 
colnames(mydata) <- c('id' , 'rowNumId' , 'step1') 

创建数据框:

enter image description here

我试图通过计算ID分组每个时间戳之间的差异。

这里是代码我想:

mydata$"Days spent" <- unlist(by(mydata, mydata$id, function(x) as.numeric(difftime(ymd_hms(x$step1),ymd_hms(x$step1)[1], units= "days")))) 

但这返回不正确的数据框 '花天' 列:

enter image description here

364.9994 & -9464.9554是不正确的值。

我没有正确计算时差吗?

基于“第一步”的formt,我们需要使用dmy_hm将其转换为“日期时间”类

library(dplyr) 
library(lubridate) 
mydata %>% 
    group_by(id) %>% 
    mutate(DaysSpent = as.numeric(difftime(dmy_hm(step1), 
         dmy_hm(step1)[1], units = 'days'))) 
+1

其实,你需要'dmy_hm'。使用'dmy_hms'例如'30-12-2010:11.02'将被解析为'2020-12-30 10:11:02' –