将分钟作为 as.ITime() 添加到 as.ITime() 作为固定时间
Add minutes as as.ITime() to as.ITime() as fixed time
我遵循了这个 但遇到了几个问题。
我有
# A tibble: 6 x 2
OnsetTime TotalSleepTime
<chr> <dbl>
1 22:55:00 448
2 23:13:00 420
3 01:45:00 327
4 00:13:00 448
5 01:05:00 349
6 23:50:00 466
q$TotalSleepTime
以分钟为单位,我想将这些分钟添加到 q$OnsetTime
并用该时间创建一个新列。
我试过了
q %>% mutate(newtime = as.ITime(OnsetTime) + as.ITime(TotalSleepTime))
但这不会产生所需的输出:
# A tibble: 10 x 2
TotalSleepTime newtime
<dbl> <ITime>
1 448 23:02:28
2 420 23:20:00
3 327 01:50:27
4 448 00:20:28
5 349 01:10:49
6 466 23:57:46
我正在 data.table
或 lubridate
中寻求解决方案。
我也试过了
q %>% mutate(
TotalSleepTime_new = as.integer(TotalSleepTime/60),
newtime = hms(OnsetTime) + hours(TotalSleepTime_new))
数据
q <- structure(list(OnsetTime = c("22:55:00", "23:13:00", "01:45:00",
"00:13:00", "01:05:00", "23:50:00"), TotalSleepTime = c(448,
420, 327, 448, 349, 466)), row.names = c(NA, -6L), class = c("tbl_df",
"tbl", "data.frame"))
在R中添加时间是以秒为单位的。既然你有时间,我们需要乘以。
library(dplyr)
q %>%
mutate(newtime = as.ITime(OnsetTime) + 60*TotalSleepTime)
# # A tibble: 6 x 3
# OnsetTime TotalSleepTime newtime
# <chr> <dbl> <ITime>
# 1 22:55:00 448 30:23:00
# 2 23:13:00 420 30:13:00
# 3 01:45:00 327 07:12:00
# 4 00:13:00 448 07:41:00
# 5 01:05:00 349 06:54:00
# 6 23:50:00 466 31:36:00
library(data.table)
as.data.table(q)[, newtime := as.ITime(OnsetTime) + 60*TotalSleepTime][]
# OnsetTime TotalSleepTime newtime
# <char> <num> <ITime>
# 1: 22:55:00 448 30:23:00
# 2: 23:13:00 420 30:13:00
# 3: 01:45:00 327 07:12:00
# 4: 00:13:00 448 07:41:00
# 5: 01:05:00 349 06:54:00
# 6: 23:50:00 466 31:36:00
我遵循了这个
我有
# A tibble: 6 x 2
OnsetTime TotalSleepTime
<chr> <dbl>
1 22:55:00 448
2 23:13:00 420
3 01:45:00 327
4 00:13:00 448
5 01:05:00 349
6 23:50:00 466
q$TotalSleepTime
以分钟为单位,我想将这些分钟添加到 q$OnsetTime
并用该时间创建一个新列。
我试过了
q %>% mutate(newtime = as.ITime(OnsetTime) + as.ITime(TotalSleepTime))
但这不会产生所需的输出:
# A tibble: 10 x 2
TotalSleepTime newtime
<dbl> <ITime>
1 448 23:02:28
2 420 23:20:00
3 327 01:50:27
4 448 00:20:28
5 349 01:10:49
6 466 23:57:46
我正在 data.table
或 lubridate
中寻求解决方案。
我也试过了
q %>% mutate(
TotalSleepTime_new = as.integer(TotalSleepTime/60),
newtime = hms(OnsetTime) + hours(TotalSleepTime_new))
数据
q <- structure(list(OnsetTime = c("22:55:00", "23:13:00", "01:45:00",
"00:13:00", "01:05:00", "23:50:00"), TotalSleepTime = c(448,
420, 327, 448, 349, 466)), row.names = c(NA, -6L), class = c("tbl_df",
"tbl", "data.frame"))
在R中添加时间是以秒为单位的。既然你有时间,我们需要乘以。
library(dplyr)
q %>%
mutate(newtime = as.ITime(OnsetTime) + 60*TotalSleepTime)
# # A tibble: 6 x 3
# OnsetTime TotalSleepTime newtime
# <chr> <dbl> <ITime>
# 1 22:55:00 448 30:23:00
# 2 23:13:00 420 30:13:00
# 3 01:45:00 327 07:12:00
# 4 00:13:00 448 07:41:00
# 5 01:05:00 349 06:54:00
# 6 23:50:00 466 31:36:00
library(data.table)
as.data.table(q)[, newtime := as.ITime(OnsetTime) + 60*TotalSleepTime][]
# OnsetTime TotalSleepTime newtime
# <char> <num> <ITime>
# 1: 22:55:00 448 30:23:00
# 2: 23:13:00 420 30:13:00
# 3: 01:45:00 327 07:12:00
# 4: 00:13:00 448 07:41:00
# 5: 01:05:00 349 06:54:00
# 6: 23:50:00 466 31:36:00