У меня есть два кадра данных в момент времени 1 и момент времени 2. Каждый кадр данных имеет столбец «средняя точка», и я хочу сравнить среднюю точку в кадре данных 2 (момент времени 2) с кадром данных средней точки 1 (момент времени 1), например что, если он находится в пределах +/- 1, уникальный «id» назначается в столбце с именем «id» для каждого сравнения, которое возвращает TRUE по указанным выше параметрам. Если его значение false, то идентификатор должен быть пустым или 0. Я пока безуспешно играл с функцией ifelse (). Я пытался создать функцию, чтобы временная точка n кадра данных сравнивалась с предыдущей временной точкой (n-1).
Я в конечном итоге буду использовать пакет purrr для l oop it для каждой временной точки ( всего 130i sh), чтобы понять, почему я это делаю.
Игнорируйте столбцы максимума и минимума, они относятся к чему-то другому, цените любую возможную помощь!
Фрейм данных 1 (момент времени 1)
structure(list(Object = c(2666L, 2668L, 2671L, 2674L, 2676L,
2677L, 2678L, 2679L, 2680L, 2682L, 2683L, 2684L, 2685L, 2686L,
2687L, 2689L, 2692L, 2693L, 2694L, 2695L, 2696L), minimum = c(4L,
39L, 147L, 224L, 419L, 531L, 595L, 641L, 669L, 723L, 810L, 836L,
907L, 978L, 1061L, 1129L, 1290L, 1519L, 1749L, 1843L, 1897L),
maximum = c(22L, 85L, 173L, 242L, 449L, 587L, 627L, 655L,
702L, 740L, 828L, 890L, 923L, 1024L, 1086L, 1144L, 1302L,
1544L, 1780L, 1870L, 1925L), midpoint = c(13, 62, 160, 233,
434, 559, 611, 648, 685.5, 731.5, 819, 863, 915, 1001, 1073.5,
1136.5, 1296, 1531.5, 1764.5, 1856.5, 1911)), row.names = c(NA,
-21L), class = c("tbl_df", "tbl", "data.frame"))
Фрейм данных 2 ( момент времени 2)
structure(list(Object = c(2645L, 2646L, 2650L, 2652L, 2655L,
2656L, 2657L, 2658L, 2659L, 2661L, 2662L, 2663L, 2664L, 2665L,
2667L, 2670L, 2675L, 2681L, 2688L, 2690L, 2691L), minimum = c(4L,
40L, 147L, 224L, 415L, 532L, 595L, 641L, 670L, 722L, 811L, 835L,
907L, 978L, 1061L, 1128L, 1289L, 1520L, 1748L, 1843L, 1897L),
maximum = c(22L, 85L, 173L, 242L, 445L, 588L, 627L, 655L,
702L, 739L, 828L, 891L, 923L, 1022L, 1085L, 1143L, 1302L,
1544L, 1779L, 1870L, 1925L), midpoint = c(13, 62.5, 160,
233, 430, 560, 611, 648, 686, 730.5, 819.5, 863, 915, 1000,
1073, 1135.5, 1295.5, 1532, 1763.5, 1856.5, 1911)), row.names = c(NA,
-21L), class = c("tbl_df", "tbl", "data.frame"))
Ожидаемый результат:
object minimum maximum midpoint id
2645 4 22 13 1
2646 40 85 62.5 2
2650 147 173 260 3
Таким образом, результат представляет собой дополнительный столбец к кадру данных 2 с уникальным идентификатором для каждого экземпляра, где средняя точка в наблюдении 1 (в df2) находится в пределах +/- 1 к наблюдению 1 (в df1). Поскольку я хочу сравнить с n-1-м фреймом данных, потому что он представляет предыдущий момент времени.