У меня есть два набора данных: «Df_A» и «Df_B»:
Df_A
Date Info A Info B
9/19/18 23:00 36 48
9/18/18 23:00 47 30
9/17/18 23:00 51 3
8/14/18 23:00 45 16
8/6/18 23:00 37 13
8/5/18 23:00 42 66
7/11/18 23:00 42 53
7/4/18 23:00 38 10
Df_B
Released Info Event Value X
9/6/2018 22:30 Event A 51.8
8/6/2018 22:30 Event A 52
7/5/2018 22:30 Event A 50.6
6/6/2018 22:30 Event A 54
9/2/2018 22:30 Event C 48
7/31/2018 22:30 Event C 45
9/4/2018 22:30 Event D 58.7
8/2/2018 22:30 Event D 56.2
7/3/2018 22:30 Event D 57.3
6/4/2018 22:30 Event D 51.1
5/2/2018 22:30 Event D 54.2
4/4/2018 22:30 Event D 59.8
9/3/2018 1:30 Event E 61.8
8/6/2018 1:30 Event E 63
7/2/2018 1:30 Event E 65.2
Оба «Дата» и «Released.info» являются факторами.
У меня есть вектор 'События », который содержит события в« Df_B », которые мне нужно проанализировать, например,
Events <- c("Event A", "Event D")
Для каждого« события »в« Df_B »я хотел бы проверить, является ли« Дата »в« Df_A »больше, чем «Выпущенная информация» в «Df_B».Если это так, я хочу добавить соответствующее значение «Событие A» и «Событие B» к «Df_A».
Требуемый вывод:
Date Info A Info B Event A Event D
9/19/18 23:00 36 48 51.8 58.7
9/18/18 23:00 47 30 51.8 58.7
9/17/18 23:00 51 3 51.8 58.7
8/14/18 23:00 45 16 52 56.2
8/6/18 23:00 37 13 52 56.2
8/5/18 23:00 42 66 50.6 56.2
7/11/18 23:00 42 53 50.6 57.3
7/4/18 23:00 38 10 54 57.3
Например, для 9/19/18 23:00
, 9/18/18 23:00
и 9/17/18 23:00
в 'Df_A', ближайшая предыдущая дата в 'Df_B' для группы 'Событие A' - 9/6/2018 22:30
.Таким образом, для этих строк мы выбираем значение 51,8 из 'Df_B'.И так далее для всех дат в Df_A
, а также для «Событий A» и «Событий B» в «Df_B».
Я хотел бы добавить новые n столбцов в 'Df_A', в этом примере 'Событие A' и 'Событие D', но это может быть больше.
Для этого я былпытаясь создать динамические переменные для динамического количества событий с чем-то вроде этого (так как события приходят из csv в виде матрицы):
#To Create a variable for each Event
ListEvents <- as.list(as.vector(Events))
names(ListEvents) <- paste("Variable", 1:length(ListEvents), sep = "")
list2env(ListEvents,envir = .GlobalEnv)
После создания переменной для каждого события я думал о созданиицикл, чтобы я мог создать подмножество для каждого события, а затем сравнить дату (Df_A) с датой выпуска (Df_B) и добавить ее в качестве столбца в Df_A.Но я знаю, что это ненужный сложный и неэффективный подход.Может ли кто-нибудь мне помочь?