Итак, у меня есть следующий фрейм данных, называемый df1 :
df1 <- structure(list(startTime = structure(c(1519903920, 1519905060,
1519913740, 1519919880), class = c("POSIXct", "POSIXt"), tzone = "America/New_York"),
endTime = structure(c(1519904880, 1519912200, 1519913940,
1522142880), class = c("POSIXct", "POSIXt"), tzone = "America/New_York"),
impact = c(92.17, 616.43, 63.69, 14.69), impactPercent = c(184.15,
1495.17, 138.69, 19.97), impactSpeedDiff = c(3587.72, 25726.22,
2616.01, 474.11), maxQueueLength = c(5.76053, 5.76053, 4.829511,
2.447619), tmcs = list(c("110N04623", "110-04623", "110N04624",
"110-04624", "110N04625", "110-04625", "110N04626", "110-04626",
"110N04627"), c("110N04623", "110-04623", "110N04624", "110-04624",
"110N04625", "110-04625", "110N04626", "110-04626", "110N04627"
), c("110N04623", "110-04623", "110N04624", "110-04624",
"110N04625", "110-04625", "110N04626", "110-04626"), c("110N04623",
"110-04623", "110N04624", "110-04624", "110N04625")), early_startTime = structure(c(1519903620,
1519904760, 1519913740, 1522133400), class = c("POSIXct",
"POSIXt"), tzone = "America/New_York")), row.names = c(NA,
4L), class = "data.frame")
И, учитывая этот фрейм данных, мне нужно сопоставить следующий фрейм данных ( df2 ).
df2 <- structure(list(created_tstamp = structure(c(1519926899, 1519913840,
1519913840, 1519927924, 1522141200, 1522152619, 1522152708, 1522152728,
1519928416, 1519928785, 1519929080, 1519929306, 1519929964, 1519930050,
1522154148, 1519930311, 1519930139, 1519930470, 1519930660, 1519929579
), class = c("POSIXct", "POSIXt"), tzone = "America/New_York"),
closed_tstamp = structure(c(1519929764, 1519926987, 1519927686,
1519928360, 1522152738, 1522152779, 1522154882, 1522152819,
1519928464, 1519928914, 1519929266, 1519929741, 1519939420,
1519930622, 1522155300, 1519930334, 1519931054, 1519951230,
1519930766, 1519930830), class = c("POSIXct", "POSIXt"), tzone = "America/New_York"),
code = c("110-04508", "110N04623", "110N04623", "110P05583",
"", "", "110N04485", "110N04357", "110-05066", "110-04421",
"110N04421", "110P04577", "110-04204", "110-04269", "110+04673",
"110-04445", "", "110P05797", "110N04269", "110+04520")), row.names = c(NA,
20L), class = "data.frame")
Соответствие определяется двумя критериями вместе:
created_tstamp
дюйм df2 находится между early_startTime
и endTime
дюйм df1 code
в df2
существует в той же ячейке tmcs
в df1
Оба условия должны быть выполнены, чтобы его можно было рассматривать матч. В конечном итоге я хотел бы создать идентификатор, чтобы каждая строка df2 соответствовала соответствующему совпадению в df1 . это, вероятно, сделано с помощью каких-то al oop, но я не уверен, как это написать. Примечание: это подмножество данных.
Если точка данных в df2 не имеет соответствия в df1 , в столбце идентификатора должно быть указано NA . и оба df должны в конце получить столбец идентификатора.