如何将小时:分钟:秒转换为R中的十进制数
根据我最近的问题 我想将一列转换为date格式的data.frame,转换为十进制数。但是,我想找到另一种方法,但使用POSIXct的秒数。我们可以将这个向量乘以如何将小时:分钟:秒转换为R中的十进制数,r,datetime,posixct,R,Datetime,Posixct,根据我最近的问题 我想将一列转换为date格式的data.frame,转换为十进制数。但是,我想找到另一种方法,但使用POSIXct的秒数。我们可以将这个向量乘以c(1,1/60,1/3600)例如02:20:00将变成2。333333我可以把它计算到我的数据中吗 # A tibble: 10 x 3 trip_id start_time end_time <int> <dttm> <
c(1,1/60,1/3600)
例如02:20:00
将变成2。333333
我可以把它计算到我的数据中吗
# A tibble: 10 x 3
trip_id start_time end_time
<int> <dttm> <dttm>
1 1 2020-10-05 11:11:36 2020-10-05 12:12:54
2 2 2020-10-05 16:09:16 2020-10-05 20:00:42
3 3 2020-10-05 09:16:33 2020-10-05 11:16:27
4 4 2020-10-05 14:16:38 2020-10-05 14:37:38
5 5 2020-10-05 13:08:16 2020-10-05 13:13:16
6 6 2020-10-05 11:02:23 2020-10-05 13:04:16
7 7 2020-10-05 13:15:19 2020-10-05 15:54:19
8 56562 2020-10-09 11:05:25 2020-10-09 13:37:44
9 56563 2020-10-09 14:11:30 2020-10-09 14:12:30
10 56564 2020-10-09 16:00:40 2020-10-09 16:46:58
#一个tible:10 x 3
行程id开始时间结束时间
1 1 2020-10-05 11:11:36 2020-10-05 12:12:54
2 2 2020-10-05 16:09:16 2020-10-05 20:00:42
3 3 2020-10-05 09:16:33 2020-10-05 11:16:27
4 4 2020-10-05 14:16:38 2020-10-05 14:37:38
5 5 2020-10-05 13:08:16 2020-10-05 13:13:16
6 6 2020-10-05 11:02:23 2020-10-05 13:04:16
7 7 2020-10-05 13:15:19 2020-10-05 15:54:19
8 56562 2020-10-09 11:05:25 2020-10-09 13:37:44
9 56563 2020-10-09 14:11:30 2020-10-09 14:12:30
10 56564 2020-10-09 16:00:40 2020-10-09 16:46:58
data我不确定我是否完全满足了你的数学要求,但这对你有用吗
library(dplyr)
data %>%
mutate(dec = as.numeric(strftime(start_time, format = '%H', tz = 'UTC')) * 1
as.numeric(strftime(start_time, format = '%M', tz = 'UTC'))/60 +
as.numeric(strftime(start_time, format = '%H', tz = 'UTC'))/3600)
# A tibble: 10 x 4
trip_id start_time end_time dec
<int> <dttm> <dttm> <dbl>
1 1 2020-10-05 11:11:36 2020-10-05 12:12:54 11.2
2 2 2020-10-05 16:09:16 2020-10-05 20:00:42 16.2
3 3 2020-10-05 09:16:33 2020-10-05 11:16:27 9.27
4 4 2020-10-05 14:16:38 2020-10-05 14:37:38 14.3
5 5 2020-10-05 13:08:16 2020-10-05 13:13:16 13.1
6 6 2020-10-05 11:02:23 2020-10-05 13:04:16 11.0
7 7 2020-10-05 13:15:19 2020-10-05 15:54:19 13.3
8 56562 2020-10-09 11:05:25 2020-10-09 13:37:44 11.1
9 56563 2020-10-09 14:11:30 2020-10-09 14:12:30 14.2
10 56564 2020-10-09 16:00:40 2020-10-09 16:46:58 16.0
库(dplyr)
数据%>%
变异(dec=as.numeric(strftime(开始时间,格式='%H',tz='UTC'))*1
as.numeric(strftime(开始时间,格式='%M',tz='UTC'))/60+
as.numeric(strftime(开始时间,格式='%H',tz='UTC'))/3600)
#一个tibble:10x4
行程id开始时间结束时间12月
1 1 2020-10-05 11:11:36 2020-10-05 12:12:54 11.2
2 2 2020-10-05 16:09:16 2020-10-05 20:00:42 16.2
3 3 2020-10-05 09:16:33 2020-10-05 11:16:27 9.27
4 4 2020-10-05 14:16:38 2020-10-05 14:37:38 14.3
5 5 2020-10-05 13:08:16 2020-10-05 13:13:16 13.1
6 6 2020-10-05 11:02:23 2020-10-05 13:04:16 11.0
7 7 2020-10-05 13:15:19 2020-10-05 15:54:19 13.3
8 56562 2020-10-09 11:05:25 2020-10-09 13:37:44 11.1
9 56563 2020-10-09 14:11:30 2020-10-09 14:12:30 14.2
10 56564 2020-10-09 16:00:40 2020-10-09 16:46:58 16.0
我不确定我是否完全满足了你的数学要求,但这对你有用吗
library(dplyr)
data %>%
mutate(dec = as.numeric(strftime(start_time, format = '%H', tz = 'UTC')) * 1
as.numeric(strftime(start_time, format = '%M', tz = 'UTC'))/60 +
as.numeric(strftime(start_time, format = '%H', tz = 'UTC'))/3600)
# A tibble: 10 x 4
trip_id start_time end_time dec
<int> <dttm> <dttm> <dbl>
1 1 2020-10-05 11:11:36 2020-10-05 12:12:54 11.2
2 2 2020-10-05 16:09:16 2020-10-05 20:00:42 16.2
3 3 2020-10-05 09:16:33 2020-10-05 11:16:27 9.27
4 4 2020-10-05 14:16:38 2020-10-05 14:37:38 14.3
5 5 2020-10-05 13:08:16 2020-10-05 13:13:16 13.1
6 6 2020-10-05 11:02:23 2020-10-05 13:04:16 11.0
7 7 2020-10-05 13:15:19 2020-10-05 15:54:19 13.3
8 56562 2020-10-09 11:05:25 2020-10-09 13:37:44 11.1
9 56563 2020-10-09 14:11:30 2020-10-09 14:12:30 14.2
10 56564 2020-10-09 16:00:40 2020-10-09 16:46:58 16.0
库(dplyr)
数据%>%
变异(dec=as.numeric(strftime(开始时间,格式='%H',tz='UTC'))*1
as.numeric(strftime(开始时间,格式='%M',tz='UTC'))/60+
as.numeric(strftime(开始时间,格式='%H',tz='UTC'))/3600)
#一个tibble:10x4
行程id开始时间结束时间12月
1 1 2020-10-05 11:11:36 2020-10-05 12:12:54 11.2
2 2 2020-10-05 16:09:16 2020-10-05 20:00:42 16.2
3 3 2020-10-05 09:16:33 2020-10-05 11:16:27 9.27
4 4 2020-10-05 14:16:38 2020-10-05 14:37:38 14.3
5 5 2020-10-05 13:08:16 2020-10-05 13:13:16 13.1
6 6 2020-10-05 11:02:23 2020-10-05 13:04:16 11.0
7 7 2020-10-05 13:15:19 2020-10-05 15:54:19 13.3
8 56562 2020-10-09 11:05:25 2020-10-09 13:37:44 11.1
9 56563 2020-10-09 14:11:30 2020-10-09 14:12:30 14.2
10 56564 2020-10-09 16:00:40 2020-10-09 16:46:58 16.0
使用R基
df <- read.csv(text ="start_time end_time
05/10/2020 11:11:36 05/10/2020 12:12:54
05/10/2020 16:09:16 05/10/2020 20:00:42
05/10/2020 09:16:33 05/10/2020 11:16:27
05/10/2020 14:16:38 05/10/2020 14:37:38
05/10/2020 13:08:16 05/10/2020 13:13:16
05/10/2020 11:02:23 05/10/2020 13:04:16
05/10/2020 13:15:19 05/10/2020 15:54:19
09/10/2020 11:05:25 09/10/2020 13:37:44
09/10/2020 14:11:30 09/10/2020 14:12:30
09/10/2020 16:00:40 09/10/2020 16:46:58
", sep="\t" )
df$test <- lapply(str_split(str_sub(df$start_time,12), ":"),
function(x) sum(as.numeric(unlist(x)) * c(1,1/60, 1/3600)))
df
start_time end_time test
1 05/10/2020 11:11:36 05/10/2020 12:12:54 11.19333
2 05/10/2020 16:09:16 05/10/2020 20:00:42 16.15444
3 05/10/2020 09:16:33 05/10/2020 11:16:27 9.275833
4 05/10/2020 14:16:38 05/10/2020 14:37:38 14.27722
5 05/10/2020 13:08:16 05/10/2020 13:13:16 13.13778
6 05/10/2020 11:02:23 05/10/2020 13:04:16 11.03972
7 05/10/2020 13:15:19 05/10/2020 15:54:19 13.25528
8 09/10/2020 11:05:25 09/10/2020 13:37:44 11.09028
9 09/10/2020 14:11:30 09/10/2020 14:12:30 14.19167
10 09/10/2020 16:00:40 09/10/2020 16:46:58 16.01111
df使用R基
df <- read.csv(text ="start_time end_time
05/10/2020 11:11:36 05/10/2020 12:12:54
05/10/2020 16:09:16 05/10/2020 20:00:42
05/10/2020 09:16:33 05/10/2020 11:16:27
05/10/2020 14:16:38 05/10/2020 14:37:38
05/10/2020 13:08:16 05/10/2020 13:13:16
05/10/2020 11:02:23 05/10/2020 13:04:16
05/10/2020 13:15:19 05/10/2020 15:54:19
09/10/2020 11:05:25 09/10/2020 13:37:44
09/10/2020 14:11:30 09/10/2020 14:12:30
09/10/2020 16:00:40 09/10/2020 16:46:58
", sep="\t" )
df$test <- lapply(str_split(str_sub(df$start_time,12), ":"),
function(x) sum(as.numeric(unlist(x)) * c(1,1/60, 1/3600)))
df
start_time end_time test
1 05/10/2020 11:11:36 05/10/2020 12:12:54 11.19333
2 05/10/2020 16:09:16 05/10/2020 20:00:42 16.15444
3 05/10/2020 09:16:33 05/10/2020 11:16:27 9.275833
4 05/10/2020 14:16:38 05/10/2020 14:37:38 14.27722
5 05/10/2020 13:08:16 05/10/2020 13:13:16 13.13778
6 05/10/2020 11:02:23 05/10/2020 13:04:16 11.03972
7 05/10/2020 13:15:19 05/10/2020 15:54:19 13.25528
8 09/10/2020 11:05:25 09/10/2020 13:37:44 11.09028
9 09/10/2020 14:11:30 09/10/2020 14:12:30 14.19167
10 09/10/2020 16:00:40 09/10/2020 16:46:58 16.01111
df通过从datetime对象中减去date对象,可以使用difftime()
函数
例如:
difftime(data$start_time, as.Date(data$start_time))
#or to specify the units
difftime(data$start_time, as.Date(data$start_time), units= "day")
通过从datetime对象中减去date对象,可以使用difftime()
函数
例如:
difftime(data$start_time, as.Date(data$start_time))
#or to specify the units
difftime(data$start_time, as.Date(data$start_time), units= "day")