Я борюсь за объединение двух наборов данных друг с другом.
Dataset1 содержит «до времени», «после времени» и «канал».
Dataset2 также содержит только один столбец "time" и "channel".
Я хочу добавить двоичный столбец (Да / Нет) к Dataset1 с этим логом c: если в Dataset2 есть строка, где канал == канал, а время находится в пределах «до» и «после» времени, я хочу иметь «ДА». Остальное "НЕТ".
Данные1
ID Channel before_time after_time
1 A1 2019-09-02 20:13:00 2019-09-02 20:33:00
2 B1 2019-09-02 20:03:00 2019-09-02 20:23:00
3 C1 2019-09-02 20:23:00 2019-09-02 20:43:00
4 D1 2019-09-02 20:23:00 2019-09-02 20:43:00
Данные2
ID_B Channel_B Time_B
Hallo A1 2019-09-02 20:23:00
Hi B2 2019-09-02 20:05:00
Hoi C1 2019-09-02 22:23:00
Желаемый выход
ID Channel before_time after_time Available
1 A1 2019-09-02 20:13:00 2019-09-02 20:33:00 Yes # Channel == Channel, Time between before & after
2 B1 2019-09-02 20:03:00 2019-09-02 20:23:00 No # Channel != Channel
3 C1 2019-09-02 20:23:00 2019-09-02 20:43:00 No # Time is not between before & after
4 D1 2019-09-02 20:23:00 2019-09-02 20:43:00 No # There is no matching data where channel is D1
Желаемый результат 2 (комментарии Решения)
Добавление дополнительных столбцов из второго набора данных (Данные2).
ID Channel before_time after_time Available ID_B
1 A1 2019-09-02 20:13:00 2019-09-02 20:33:00 Yes Hallo
2 B1 2019-09-02 20:03:00 2019-09-02 20:23:00 No x
3 C1 2019-09-02 20:23:00 2019-09-02 20:43:00 No x
4 D1 2019-09-02 20:23:00 2019-09-02 20:43:00 No x
Воспроизводимый пример (данные):
ID <- c("1", "2", "3", "4")
channel <- c("A1", "B1", "C1", "D1)
#startdate <- as.POSIXct(c("2019-09-02 20:23:00", "2019-09-02 20:13:00", "2019-09-02 20:33:00", "2019-09-02 20:33:00"))
before_time <- as.POSIXct(c("2019-09-02 20:13:00", "2019-09-02 20:03:00", "2019-09-02 20:23:00", "2019-09-02 20:23:00"))
after_time <- as.POSIXct(c("2019-09-02 20:33:00", "2019-09-02 20:23:00", "2019-09-02 20:43:00","2019-09-02 20:43:00"))
data1 <- data.frame(ID, channel, before_time, after_time)
View(data1)
ID_B <- c("Hallo", "Hi", "Hoi")
channel_B <- c("A1", "B2", "C1")
Time_B <- as.POSIXct(c("2019-09-02 20:23:00", "2019-09-02 20:05:00", "2019-09-02 22:23:00"))
data2 <- data.frame(ID_B, channel_B, Time_B)
View(data2)