所以我想将“TOTALSEC”中的秒数转换为24小时的时间(即14:32:40)。但是,它需要基于“时间”中的开始时间。例如,我将“12:00:00”作为时间下的开始时间和“TOTALSEC”下的“3630”。我希望将转换时间读取为13:00:30。对于上下文,时间是开始时间一个录音机,TOTALSEC是自开始时间以来音频剪辑发生的#逝时间。所以在上面的例子中,我开始在12:00:00录制,音频剪辑在开始录制后3630秒发生。
> head(stacksubset)
# A tibble: 6 x 2
TOTALSEC Time Date
<dbl> <chr> <chr>
1 10613.67 15:53:50 2017-05-30
2 56404.35 17:29:44 2017-05-29
3 20480.54 16:16:12 2017-06-13
4 60613.47 15:53:50 2017-05-30
5 80034.30 16:16:12 2017-06-02
6 50710.37 16:16:12 2017-05-27
我当时认为它可能是某种循环函数(在上述6之后还有2000行)。
我对R很新,所以解释每一步都会有所帮助。谢谢!
答案 0 :(得分:2)
data <- data.frame(TOTALSEC = c(10613.67, 56404.35, 20480.54, 60613.47, 80034.30, 50710.37),
Time = c("15:53:50", "17:29:44", "16:16:12", "15:53:50", "16:16:12", "16:16:12"))
因此,因为日期在这里实际上很重要,所以每次粘贴到日期(今天的日期),然后在系统的时区中转换为日期时间。 然后加在一起。
library(lubridate)
library(dplyr)
data %>% mutate(Time = as_datetime(paste(Date, Time), Sys.timezone(location = TRUE)),
end_time = TOTALSEC + Time)
TOTALSEC Time end_time
1 10613.67 2017-11-23 15:53:50 2017-11-23 18:50:43
2 56404.35 2017-11-23 17:29:44 2017-11-24 09:09:48
3 20480.54 2017-11-23 16:16:12 2017-11-23 21:57:32
4 60613.47 2017-11-23 15:53:50 2017-11-24 08:44:03
5 80034.30 2017-11-23 16:16:12 2017-11-24 14:30:06
6 50710.37 2017-11-23 16:16:12 2017-11-24 06:21:22