Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何用数据帧中两个时间之间的时间填充数据帧?_R_Datetime - Fatal编程技术网

R 如何用数据帧中两个时间之间的时间填充数据帧?

R 如何用数据帧中两个时间之间的时间填充数据帧?,r,datetime,R,Datetime,我试图用介于“开始日期”和“结束日期”之间的日期和时间来填充数据框,这两个日期和时间在数据框的不同列中。我想每分钟做一次 例如,我有这样一个数据帧: data <- data.frame(id = c(1,1,1,2,3), Start_dates = c("20-10-2016 00:00:00", "23-10-2016 00:00:00", "01-03-2018 00:00:00", "05-12-2018 00:00:00", "02-04-

我试图用介于“开始日期”和“结束日期”之间的日期和时间来填充数据框,这两个日期和时间在数据框的不同列中。我想每分钟做一次

例如,我有这样一个数据帧:

data <- data.frame(id = c(1,1,1,2,3),
                   Start_dates = c("20-10-2016 00:00:00", "23-10-2016 00:00:00", "01-03-2018 00:00:00", "05-12-2018 00:00:00", "02-04-2016 00:00:00"),
                   End_dates = c("20-10-2016 00:02:00", "23-10-2016 00:01:00", "01-03-2018 00:01:00", "05-12-2018 00:02:00", "02-04-2016 00:01:00"))
     data_requested <- data.frame(id = c(1,1,1,1,1,1,1,2,2,3,3,3), 
      times = c("20-10-2016 00:00:00",
      "20-10-2016 00:01:00", "20-10-2016 00:02:00", "23-10-2016 00:00:00",
     "23-10-2016 00:01:00", "01-03-2018 00:00:00", "01-03-2018 00:01:00", 
     "05-12-2018 00:00:00", "05-12-2018 00:01:00", "05-12-2018 00:02:00", 
     "02-04-2016 00:00:00", "02-04-2016 00:01:00"))

data我们将“开始日期/结束日期”转换为datetime,并使用
map2
获得序列

library(tidyverse)
library(lubridate)
data %>%
    # convert dates to DateTime object
    mutate_at(vars(ends_with('dates')), dmy_hms) %>%
    # get the sequence between corresponding Start/End dates 
    mutate(times =  map2(Start_dates, End_dates, seq, by = "1 min")) %>%
    # unnest to expand the list column
    unnest(times) %>% 
    # select the wanted columns
    select(id, times)
#   id               times
#1   1 2016-10-20 00:00:00
#2   1 2016-10-20 00:01:00
#3   1 2016-10-20 00:02:00
#4   1 2016-10-23 00:00:00
#5   1 2016-10-23 00:01:00
#6   1 2018-03-01 00:00:00
#7   1 2018-03-01 00:01:00
#8   2 2018-12-05 00:00:00
#9   2 2018-12-05 00:01:00
#10  2 2018-12-05 00:02:00
#11  3 2016-04-02 00:00:00
#12  3 2016-04-02 00:01:00

谢谢你的回复!