После то, что мои кадры данных выглядят (спасибо хороших правки от опытного сообщества):Dynamic и условная вставка новых строк, которые приходят после определенной даты
library(data.table)
df <- fread('Account Date Blue Red Amount
A 1/1/2016 1 0 100
A 2/1/2016 1 1 200
B 1/10/2016 0 1 300
B 2/10/2016 1 1 400')
df[, Date := as.Date(Date, format="%m/%d/%Y")]
blue <- fread('Date Amount
6/1/2015 55
1/31/2016 55
2/28/2016 65
3/31/2016 75')
blue[, Date := as.Date(Date, format="%m/%d/%Y")]
red <- fread('Date Amount
12/31/2015 43
1/15/2016 47
2/15/2016 67
3/15/2016 77')
red[, Date := as.Date(Date, format="%m/%d/%Y")]
В первичной dataframe ДФ, Синие и красных полей изображают какую категорию счет принадлежит в данной точке в примере time.for, по состоянию на 1/1/2016, счет а только принадлежит Синих категории. синий и красный данные показывают, с каких дат деньги выдавались всем счетам в синей и красной категории. Я хочу, чтобы вставить новые строки в исходном ФРА только строки, которые приходят после Даты поля в ДФЕ из синего и красного dataframes на основе принадлежит ли учетная запись в синий или красном или оба.
Выход Я ищу выглядит следующим образом:
Account Date Blue Red Amount
A 1/1/2016 1 0 100
A 1/31/2016 1 0 55
A 2/1/2016 1 1 200
A 2/15/2016 1 1 67
A 2/28/2016 1 1 65
A 3/15/2016 1 1 77
A 3/31/2016 1 1 75
B ..............................
В выходных данных, по состоянию на 1/1/2016 счета А принадлежит только Синих категории. Моя цель найти сразу дату ПОСЛЕ1/1/2016 в голубой таблице, которая 1/31/2016, а затем вставьте его. Я не хочу вставлять 1/15/2016 от красный стол, потому что счет A не является категорией Красный от 1.01.2016. Я в порядке с синими и красными полями, показывающими NA для вставленных полей.
Моя мысль пыталась установить rbind(df, blue, red), by="Account")
, но не знает, как включить условия только вставки более поздних дат, основанных на том, к какой категории принадлежит учетная запись в данный момент времени.
Нужный выход противоречива имхо: для первой строки 'df' вы только выбрать первую строку, которая соответствует условиям, в то время как для 2-й строки вы включаете более одного. Ниже вы найдете решение, которое выбирает первую строку из соответствующих строк «blue» и «red». – Jaap
@ProcrastinatusMaximus начиная с первой строки (1/1/2016), A - только категория синий, вот почему я ставлю 1/31 из синего стола, который находится между 1/1 и 2/1. по второй строке в df (2/1/2016), A является синим и красным. Вот почему я привожу все последующие даты из синих и красных таблиц. – gibbz00