首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从固定的起始点开始计算小时数,该值随变量级别的不同而变化

如何从固定的起始点开始计算小时数,该值随变量级别的不同而变化
EN

Stack Overflow用户
提问于 2019-07-08 10:37:16
回答 1查看 30关注 0票数 0

dataframe df1汇总了通过时间(Datetime)检测到的不同个体(ID)。举个简短的例子:

代码语言:javascript
运行
AI代码解释
复制
library(lubridate)

df1<- data.frame(ID= c(1,2,1,2,1,2,1,2,1,2),
                 Datetime= ymd_hms(c("2016-08-21 00:00:00","2016-08-24 08:00:00","2016-08-23 12:00:00","2016-08-29 03:00:00","2016-08-27 23:00:00","2016-09-02 02:00:00","2016-09-01 12:00:00","2016-09-09 04:00:00","2016-09-01 12:00:00","2016-09-10 12:00:00")))

> df1
   ID            Datetime
1   1 2016-08-21 00:00:00
2   2 2016-08-24 08:00:00
3   1 2016-08-23 12:00:00
4   2 2016-08-29 03:00:00
5   1 2016-08-27 23:00:00
6   2 2016-09-02 02:00:00
7   1 2016-09-01 12:00:00
8   2 2016-09-09 04:00:00
9   1 2016-09-01 12:00:00
10  2 2016-09-10 12:00:00

我想计算每一行自第一次检测到该个体以来的小时数(Hours_since_begining)。

我预计会出现这样的情况(它可能包含一些错误,因为我是手工计算的):

代码语言:javascript
运行
AI代码解释
复制
> df1
   ID            Datetime Hours_since_begining
1   1 2016-08-21 00:00:00                    0
2   2 2016-08-24 08:00:00                    0
3   1 2016-08-23 12:00:00                   60 # Number of hours between "2016-08-21 00:00:00" (first time detected the Ind 1) and "2016-08-23 12:00:00" 
4   2 2016-08-29 03:00:00                  115 
5   1 2016-08-27 23:00:00                  167 # Number of hours between "2016-08-21 00:00:00" (first time detected the Ind 1) and "2016-08-27 23:00:00" 
6   2 2016-09-02 02:00:00                  210
7   1 2016-09-01 12:00:00                  276
8   2 2016-09-09 04:00:00                  380
9   1 2016-09-01 12:00:00                  276
10  2 2016-09-10 12:00:00                  412

有人知道怎么做吗?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-08 10:46:31

您可以这样做:

代码语言:javascript
运行
AI代码解释
复制
library(tidyverse)
# first get min datetime by ID
min_datetime_id <- df1 %>% group_by(ID) %>% summarise(min_datetime=min(Datetime))
# join with df1 and compute time difference
df1 <- df1 %>% left_join(min_datetime_id) %>% mutate(Hours_since_beginning= as.numeric(difftime(Datetime, min_datetime,units="hours")))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56933137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档