I have a data frame that looks like this
Name Visit Arrival Departure
Jack week 1 8:00 NA
Jack week 1 NA 8:30
Sa
Here's one approach, assuming that person who visited will have exactly two rows of data:
library(dplyr)
df = readr::read_table("Name Visit Arrival Departure
Jack week 1 8:00 NA
Jack week 1 NA 8:30
Sally week 5 9:00 NA
Sally week 5 NA 9:30
Adam week 2 2:00 NA
Adam week 2 NA 3:00", col_types="cccc")
df %>%
group_by(Name, Visit) %>%
mutate(Arrival = ifelse(is.na(Arrival), lag(Arrival), Arrival),
Departure = ifelse(is.na(Departure), lead(Departure), Departure)) %>%
ungroup() %>%
distinct(Name, Visit, .keep_all=TRUE)
# A tibble: 3 × 4
Name Visit Arrival Departure
1 Jack week 1 8:00 8:30
2 Sally week 5 9:00 9:30
3 Adam week 2 2:00 3:00