Я столкнулся с вопросами, на которые я не могу ответить с условным слиянием двух фреймов данных. Опишу кадры данных (имена изменены):Слияние 2 dataframes в r, связанных с датами, находящимися в пределах 30d друг от друга
- Первый, DF1, имеет столбец под названием «proceduredate», который содержит дату процедуры в случае (уже отформатированный с помощью as.Date в формате% Y- % m-% d).
- Вторая, DF2, имеет переменную, называемую «orderdate», которая содержит дату каждого лабораторного заказа (также форматируется как. Date в формате% Y-% m-% d).
Каждый dataframe имеет идентификатор (называемый «id») для каждого человека, который используется для объединения «по» через два блока данных. Я хотел бы объединить файлы данных условно, чтобы включить только экземпляры DF2, у которых есть orderdate в течение 30 дней после процедуры в DF1. Как я понимаю, это будет выглядеть что-то вроде:
if ([abs(DF1$procdate-DF2$orderdate)<=30]), then{
merge(DF1,DF2,by="id")
}
Однако, я не могу понять способ превратить эту идею в рабочий код. Предложите ли вы какие-либо ссылки или аналогичные предыдущие решения?
Почему бы вам просто не создать индекс каких строк, условие которых истинно и подмножество данных до этих строк, а затем слияние? – giraffehere
Просьба привести воспроизводимый пример. –
Спасибо за помощь. Я выяснил, что самый простой способ сделать это - подмножество данных с помощью другой переменной даты, слияние на несколько файлов, rbind их, а затем подмножество конечного результирующего фрейма данных по этим датам. Следующий проект попробует это в SQL, как предложено ниже. Благодаря! – user3068408