У меня есть 2 кадра данных, A и B:
A
abc|def|datetime |
1 |55 |2016-01-28 00:00:00 |
2 |53 |2016-01-28 00:30:00 |
3 |11 |2016-01-28 02:00:00 |
B
efg|hij|datetime |
4 |ch |2016-01-28 00:11:00 |
5 |jw |2016-01-28 11:30:00 |
6 |q1 |2016-01-28 07:00:00 |
I Я хочу добавить истинный ложный столбец в конец A, если значение B находится в течение часа после. А также столбец, который показывает значение B, находится в течение часа до этого.
Выход:
abc|def|datetime |After|Before|
1 |55 |2016-01-28 00:00:00 | 0 | 1 |
2 |53 |2016-01-28 00:30:00 | 1 | 0 |
3 |11 |2016-01-28 02:00:00 | 0 | 0 |
Я пытался использовать `library (lubridate):
for(i in seq(nrow(B))){
for(j in seq(nrow(A))){
if(A$datetime[j] %in% seq(B$datetime[i],B$datetime[i] + hours(1))){
A$After[j] = 1
}
}
}
Но я не могу заставить его работать. Любая помощь будет очень ценной.
Дополнительная информация:
Фреймы данных не совпадают, я хочу определить, есть ли какие-либо случаи в B, которые находятся в течение часа после или до A. Если это так, то добавьте 1 к столбцу. например:
4 |ch |2016-01-28 00:11:00 |
после 1 |55 |2016-01-28 00:00:00 |
4 |ch |2016-01-28 00:11:00 |
до 2 |53 |2016-01-28 00:30:00 |
B - это событие, и я хочу определить это событие по отношению к A.