计算通过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')
创建数据框:
我试图通过计算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"))))
但这返回不正确的数据框 '花天' 列:
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')))
其实,你需要'dmy_hm'。使用'dmy_hms'例如'30-12-2010:11.02'将被解析为'2020-12-30 10:11:02' –