An idea via dplyr
,
library(dplyr) df %>% group_by(Date, Origin) %>% summarise_all(funs(trimws(paste(., collapse = ''))))
A tibble: 4 x 5 Groups: Date [?] Date Origin Checkin Checkout Destination <chr> <chr> <chr> <chr> <chr> 1 03-07-17 A 08:00 09:00 B 2 03-07-17 B 17:00 18:00 A 3 04-07-17 A 08:00 09:00 B 4 04-07-17 B 17:00 18:00 A
DATA
dput(df) structure(list(Date = c(" 03-07-17 ", " 03-07-17 ", " 03-07-17 ", " 03-07-17 ", " 04-07-17 ", " 04-07-17 ", " 04-07-17 ", " 04-07-17 " ), Checkin = c(" 08:00 ", " ", " 17:00 ", " ", " 08:00 ", " ", " 17:00 ", " "), Origin = c(" A ", " A ", " B ", " B ", " A ", " A ", " B ", " B "), Checkout = c(" ", " 09:00 ", " ", " 18:00 ", " ", " 09:00 ", " ", " 18:00 " ), Destination = c(" ", " B ", " ", " A ", " ", " B ", " ", " A ")), .Names = c("Date", "Checkin", "Origin", "Checkout", "Destination"), row.names = c(NA, -8L), class = "data.frame")