R 将NA值替换为添加到上一列的计算结果

R 将NA值替换为添加到上一列的计算结果,r,for-loop,time,replace,missing-data,R,For Loop,Time,Replace,Missing Data,我有一个名为救护车的响应时间数据集 Date Station TOC ORD MOB IA LS AH 01/01/13 S1 00:02:44 00:04:11 00:04:44 00:04:58 00:05:12 00:05:32 01/01/13 S2 00:03:04 00:03:21 00:03:54 00:04:28 00:04:52 00:05:

我有一个名为救护车的响应时间数据集

Date      Station TOC        ORD       MOB       IA        LS        AH       
01/01/13   S1     00:02:44   00:04:11  00:04:44  00:04:58  00:05:12  00:05:32
01/01/13   S2     00:03:04   00:03:21  00:03:54  00:04:28  00:04:52  00:05:02
01/01/13   S4     00:04:24   00:04:41  N/A       00:05:18  00:05:22  00:05:35
01/01/13   S1     00:04:44   00:04:51  00:05:04  00:05:58  00:06:12  00:06:32
时间数据代表应急响应过程的不同阶段,因此右侧的列始终位于当天晚些时候。数据集相当大,有22000条记录和大量的
NA
,但在某些情况下,每行只有一条记录,这意味着问题不大

我使用
lubridate::hms
将时间转换为秒,从而使数据正常化。例如,我想用一个新计算的字段
Emergency$ORD-IA
的平均值来替换“MOB”缺少的值,并将其添加到“ORD”值中,但我不知道该怎么做。我需要循环遍历每一行,并将平均值添加到
NA
值之前的列中

这是我在这里的第一个帖子,非常感谢大家的帮助

dput(head(Ambulance, 20))
结构(列表)日期=结构(c(1L,1L,1L,1L,1L,1L, 1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L),标签=c(“01/01/2013”, "01/01/2014", "01/01/2015", "01/02/2013", "01/02/2014", "01/02/2015", "01/03/2013", "01/03/2014", "01/03/2015", "01/04/2013", "01/04/2014", "01/04/2015", "01/05/2013", "01/05/2014", "01/05/2015", "01/06/2013", "01/06/2014", "01/06/2015", "01/07/2013", "01/07/2014", "01/07/2015", "01/08/2013", "01/08/2014", "01/08/2015", "01/09/2013", "01/09/2014", "01/09/2015", "01/10/2013", "01/10/2014", "01/10/2015", "01/11/2013", "01/11/2014", "01/11/2015", "01/12/2013", "01/12/2014", "01/12/2015", "02/01/2013", "02/01/2014", "02/01/2015", "02/02/2013", "02/02/2014", "02/02/2015", "02/03/2013", "02/03/2014", "02/03/2015", "02/04/2013", "02/04/2014", "02/04/2015", "02/05/2013", "02/05/2014", "02/05/2015", "02/06/2013", "02/06/2014", "02/06/2015", "02/07/2013", "02/07/2014", "02/07/2015", "02/08/2013", "02/08/2014", "02/08/2015", "02/09/2013", "02/09/2014", "02/09/2015", "02/10/2013", "02/10/2014", "02/10/2015", "02/11/2013", "02/11/2014", "02/11/2015", "02/12/2013", "02/12/2014", "02/12/2015", "03/01/2013", "03/01/2014", "03/01/2015", "03/02/2013", "03/02/2014", "03/02/2015", "03/03/2013", "03/03/2014", "03/03/2015", "03/04/2013", "03/04/2014", "03/04/2015", "03/05/2013", "03/05/2014", "03/05/2015", "03/06/2013", "03/06/2014", "03/06/2015", "03/07/2013", "03/07/2014", "03/07/2015", "03/08/2013", "03/08/2014", "03/08/2015", "03/09/2013", "03/09/2014", "03/09/2015", "03/10/2013", "03/10/2014", "03/10/2015", "03/11/2013", "03/11/2014", "03/11/2015", "03/12/2013", "03/12/2014", "03/12/2015", "04/01/2013", "04/01/2014", "04/01/2015", "04/02/2013", "04/02/2014", "04/02/2015", "04/03/2013", "04/03/2014", "04/03/2015", "04/04/2013", "04/04/2014", "04/04/2015", "04/05/2013", "04/05/2014", "04/05/2015", "04/06/2013", "04/06/2014", "04/06/2015", "04/07/2013", "04/07/2014", "04/07/2015", "04/08/2013", "04/08/2014", "04/08/2015", "04/09/2013", "04/09/2014", "04/09/2015", "04/10/2013", "04/10/2014", "04/10/2015", "04/11/2013", "04/11/2014", "04/11/2015", "04/12/2013", "04/12/2014", "04/12/2015", "05/01/2013", "05/01/2014", "05/01/2015", "05/02/2013", "05/02/2014", "05/02/2015", "05/03/2013", "05/03/2014", "05/03/2015", "05/04/2013", "05/04/2014", "05/04/2015", "05/05/2013", "05/05/2014", "05/05/2015", "05/06/2013", "05/06/2014", "05/06/2015", "05/07/2013", "05/07/2014", "05/07/2015", "05/08/2013", "05/08/2014", "05/08/2015", "05/09/2013", "05/09/2014", "05/09/2015", "05/10/2013", "05/10/2014", "05/10/2015", "05/11/2013", "05/11/2014", "05/11/2015", "05/12/2013", "05/12/2014", "05/12/2015", "06/01/2013", "06/01/2014", "06/01/2015", "06/02/2013", "06/02/2014", "06/02/2015", "06/03/2013", "06/03/2014", "06/03/2015", "06/04/2013", "06/04/2014", "06/04/2015", "06/05/2013", "06/05/2014", "06/05/2015", "06/06/2013", "06/06/2014", "06/06/2015", "06/07/2013", "06/07/2014", "06/07/2015", "06/08/2013", "06/08/2014", "06/08/2015", "06/09/2013", "06/09/2014", "06/09/2015", "06/10/2013", "06/10/2014", "06/10/2015", "06/11/2013", "06/11/2014", "06/11/2015", "06/12/2013", "06/12/2014", "06/12/2015", "07/01/2013", "07/01/2014", "07/01/2015", "07/02/2013", "07/02/2014", "07/02/2015", "07/03/2013", "07/03/2014", "07/03/2015", "07/04/2013", "07/04/2014", "07/04/2015", "07/05/2013", "07/05/2014", "07/05/2015", "07/06/2013", "07/06/2014", "07/06/2015", "07/07/2013", "07/07/2014", "07/07/2015", "07/08/2013", "07/08/2014", "07/08/2015", "07/09/2013", "07/09/2014", "07/09/2015", "07/10/2013", "07/10/2014", "07/10/2015", "07/11/2013", "07/11/2014", "07/11/2015", "07/12/2013", "07/12/2014", "07/12/2015", "08/01/2013", "08/01/2014", "08/01/2015", "08/02/2013", "08/02/2014", "08/02/2015", "08/03/2013", "08/03/2014", "08/03/2015", "08/04/2013", "08/04/2014", "08/04/2015", "08/05/2013", "08/05/2014", "08/05/2015", "08/06/2013", "08/06/2014", "08/06/2015", "08/07/2013", "08/07/2014", "08/07/2015", "08/08/2013", "08/08/2014", "08/08/2015", "08/09/2013", "08/09/2014", "08/09/2015", "08/10/2013", "08/10/2014", "08/10/2015", "08/11/2013", "08/11/2014", "08/11/2015", "08/12/2013", "08/12/2014", "08/12/2015", "09/01/2013", "09/01/2014", "09/01/2015", "09/02/2013", "09/02/2014", "09/02/2015", "09/03/2013", "09/03/2014", "09/03/2015", "09/04/2013", "09/04/2014", "09/04/2015", "09/05/2013", "09/05/2014", "09/05/2015", "09/06/2013", "09/06/2014", "09/06/2015", "09/07/2013", "09/07/2014", "09/07/2015", "09/08/2013", "09/08/2014", "09/08/2015", "09/09/2013", "09/09/2014", "09/09/2015", "09/10/2013", "09/10/2014", "09/10/2015", "09/11/2013", "09/11/2014", "09/11/2015", "09/12/2013", "09/12/2014", "09/12/2015", "10/01/2013", "10/01/2014", "10/01/2015", "10/02/2013", "10/02/2014", "10/02/2015", "10/03/2013", "10/03/2014", "10/03/2015", "10/04/2013", "10/04/2014", "10/04/2015", "10/05/2013", "10/05/2014", "10/05/2015", "10/06/2013", "10/06/2014", "10/06/2015", "10/07/2013", "10/07/2014", "10/07/2015", "10/08/2013", "10/0
Emergency[Emergency == "N/A"] <- NA
col_names <- names(Emergency)
library(tidyverse)
library(zoo)
Emergency %>% 
  mutate(idx = row_number()) %>% 
  gather(key, time, TOC:AH) %>% 
  arrange(idx, Station) %>% 
  mutate(date_time = as.POSIXct(paste(Date, time),
                                format = "%d/%m/%y %H:%M:%S")) %>% 
  mutate(date_time = as.POSIXct(na.approx(date_time),
                                origin = '1970-01-01 00:00.00 UTC')) %>% 
  mutate(time = format(date_time, "%H:%M:%S")) %>% #format() gives character
  select(-date_time) %>% 
  spread(key, time) %>% 
  arrange(idx) %>% 
  select(col_names)
#      Date Station      TOC      ORD      MOB       IA       LS       AH
#1 01/01/13      S1 00:02:44 00:04:11 00:04:44 00:04:58 00:05:12 00:05:32
#2 01/01/13      S2 00:03:04 00:03:21 00:03:54 00:04:28 00:04:52 00:05:02
#3 01/01/13      S4 00:04:24 00:04:41 00:04:59 00:05:18 00:05:22 00:05:35
#4 01/01/13      S1 00:04:44 00:04:51 00:05:04 00:05:58 00:06:12 00:06:32
Emergency <- structure(list(Date = c("01/01/13", "01/01/13", "01/01/13", "01/01/13"
), Station = c("S1", "S2", "S4", "S1"), TOC = c("00:02:44", "00:03:04", 
"00:04:24", "00:04:44"), ORD = c("00:04:11", "00:03:21", "00:04:41", 
"00:04:51"), MOB = c("00:04:44", "00:03:54", NA, "00:05:04"), 
    IA = c("00:04:58", "00:04:28", "00:05:18", "00:05:58"), LS = c("00:05:12", 
    "00:04:52", "00:05:22", "00:06:12"), AH = c("00:05:32", "00:05:02", 
    "00:05:35", "00:06:32")), .Names = c("Date", "Station", "TOC", 
"ORD", "MOB", "IA", "LS", "AH"), row.names = c(NA, -4L), class = "data.frame")