如何将时间转换为标准格式并计算时差
How to convert time to standard format and calculate time difference
newdf=data.frame(date=as.Date(c("2021-01-04","2021-01-05","2021-01-06","2021-01-07")),
time=c("10:32:29","11:25","12:18:42","09:58"))
这是我的数据框。我想以小时为单位计算连续两天之间的时差。你能推荐一种计算方法吗?请注意,某些时间值不包含秒。因此,首先我们必须将其转换为标准格式。你能给我一个解决所有这些问题的方法吗?这完全是R编程。
将date
和time
粘贴在一列中,使用parse_date_time
更改标准格式(Posixct)的时间值并使用difftime
计算两者之间的差异以小时为单位的连续时间。
library(dplyr)
library(tidyr)
library(lubridate)
newdf %>%
unite(datetime, date, time, sep = ' ') %>%
mutate(datetime = parse_date_time(datetime, c('Ymd HMS', 'Ymd HM')),
difference_in_hours = round(as.numeric(difftime(datetime,
lag(datetime), 'hours')), 2))
# datetime difference_in_hours
#1 2021-01-04 10:32:29 NA
#2 2021-01-05 11:25:00 24.88
#3 2021-01-06 12:18:42 24.90
#4 2021-01-07 09:58:00 21.66
newdf=data.frame(date=as.Date(c("2021-01-04","2021-01-05","2021-01-06","2021-01-07")),
time=c("10:32:29","11:25","12:18:42","09:58"))
这是我的数据框。我想以小时为单位计算连续两天之间的时差。你能推荐一种计算方法吗?请注意,某些时间值不包含秒。因此,首先我们必须将其转换为标准格式。你能给我一个解决所有这些问题的方法吗?这完全是R编程。
将date
和time
粘贴在一列中,使用parse_date_time
更改标准格式(Posixct)的时间值并使用difftime
计算两者之间的差异以小时为单位的连续时间。
library(dplyr)
library(tidyr)
library(lubridate)
newdf %>%
unite(datetime, date, time, sep = ' ') %>%
mutate(datetime = parse_date_time(datetime, c('Ymd HMS', 'Ymd HM')),
difference_in_hours = round(as.numeric(difftime(datetime,
lag(datetime), 'hours')), 2))
# datetime difference_in_hours
#1 2021-01-04 10:32:29 NA
#2 2021-01-05 11:25:00 24.88
#3 2021-01-06 12:18:42 24.90
#4 2021-01-07 09:58:00 21.66