从存储为字符的时间变量中获取时间差
Get the time difference from time varaibles stored as character
我的数据框中有两个字符变量 start_time
和 stop_time
:
start_time stop_time
<chr> <chr>
1 19:5:00 19:11:00
2 20:33:37 20:34:39
3 20:23:00 20:23:38
4 20:12:00 20:13:00
5 20:00:39 20:00:39
我想用 dplyr 以分钟为单位计算 start_time
和 stop_time
之间的差异。我的问题是这两个变量是用一个字符表示的。
预期输出:
diff_time
<dbl>
1 6
2 1.2
3 0.38
4 1
5 0.39
您可以使用以下代码片段计算时差并转换为时间对象:
as.numeric(difftime(strptime(paste("19:11:00"),"%H:%M:%S"),
strptime(paste("19:5:00"),"%H:%M:%S")))
输出:
[1] 6
library(dplyr)
library(lubridate)
df1 %>%
mutate(duration = seconds_to_period(as.numeric(difftime(
strptime(stop_time, "%H:%M:%S"),
strptime(start_time, "%H:%M:%S"),
units = "secs"))))
#> start_time stop_time duration
#> 1 19:5:00 19:11:00 6M 0S
#> 2 20:33:37 20:34:39 1M 2S
#> 3 20:23:00 20:23:38 38S
#> 4 20:12:00 20:13:00 1M 0S
#> 5 20:00:39 20:00:39 0S
数据:
read.table(text=" start_time stop_time
19:5:00 19:11:00
20:33:37 20:34:39
20:23:00 20:23:38
20:12:00 20:13:00
20:00:39 20:00:39", stringsAsFactors=F, header=T) -> df1
你可以试试:
library(lubridate)
data_time <- data.frame(start_time = c("19:5:00","20:33:37","20:23:00","20:12:00","20:00:39"),
stop_time = c("19:11:00","20:34:39","20:23:38","20:13:00","20:00:39"), stringsAsFactors = FALSE)
data_time$difference <- difftime(as.POSIXct(data_time$stop_time, format = "%H:%M:%S"),
as.POSIXct(data_time$start_time, format = "%H:%M:%S"),
units = "mins")
此致,
亚历克西斯
我的数据框中有两个字符变量 start_time
和 stop_time
:
start_time stop_time
<chr> <chr>
1 19:5:00 19:11:00
2 20:33:37 20:34:39
3 20:23:00 20:23:38
4 20:12:00 20:13:00
5 20:00:39 20:00:39
我想用 dplyr 以分钟为单位计算 start_time
和 stop_time
之间的差异。我的问题是这两个变量是用一个字符表示的。
预期输出:
diff_time
<dbl>
1 6
2 1.2
3 0.38
4 1
5 0.39
您可以使用以下代码片段计算时差并转换为时间对象:
as.numeric(difftime(strptime(paste("19:11:00"),"%H:%M:%S"),
strptime(paste("19:5:00"),"%H:%M:%S")))
输出:
[1] 6
library(dplyr)
library(lubridate)
df1 %>%
mutate(duration = seconds_to_period(as.numeric(difftime(
strptime(stop_time, "%H:%M:%S"),
strptime(start_time, "%H:%M:%S"),
units = "secs"))))
#> start_time stop_time duration
#> 1 19:5:00 19:11:00 6M 0S
#> 2 20:33:37 20:34:39 1M 2S
#> 3 20:23:00 20:23:38 38S
#> 4 20:12:00 20:13:00 1M 0S
#> 5 20:00:39 20:00:39 0S
数据:
read.table(text=" start_time stop_time
19:5:00 19:11:00
20:33:37 20:34:39
20:23:00 20:23:38
20:12:00 20:13:00
20:00:39 20:00:39", stringsAsFactors=F, header=T) -> df1
你可以试试:
library(lubridate)
data_time <- data.frame(start_time = c("19:5:00","20:33:37","20:23:00","20:12:00","20:00:39"),
stop_time = c("19:11:00","20:34:39","20:23:38","20:13:00","20:00:39"), stringsAsFactors = FALSE)
data_time$difference <- difftime(as.POSIXct(data_time$stop_time, format = "%H:%M:%S"),
as.POSIXct(data_time$start_time, format = "%H:%M:%S"),
units = "mins")
此致,
亚历克西斯