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")