У меня есть фрейм данных в R с примерно 1700 наблюдениями. Я пересек точки GPS с многоугольниками и хочу определить, входят ли несколько идентификаторов в один и тот же многоугольник в один и тот же 12-часовой период (с 18:00 до 6:00). Вот заголовок моего фрейма данных.
ID date time DOP datetime p pid1 Long Lat
289 Friday, September 1, 2017 1:15:29 AM 4.2 2017-09-01 01:15:29 <NA> 2 763692.8 3617676
289 Friday, September 1, 2017 4:15:15 AM 1.4 2017-09-01 04:15:15 <NA> 2 763674.5 3617692
299 Friday, September 1, 2017 5:00:16 AM 3.6 2017-09-01 05:00:16 <NA> 2 764427.2 3616750
13 Friday, September 1, 2017 5:15:25 AM 2.8 2017-09-01 05:15:25 <NA> 1 767800.5 3613057
299 Friday, September 1, 2017 5:15:29 AM 1.6 2017-09-01 05:15:29 <NA> 2 764420.7 3616746
299 Friday, September 1, 2017 5:30:08 AM 1.4 2017-09-01 05:30:08 <NA> 2 764420.7 3616747
Вы можете видеть, что на пятницу, 1 сентября 2017 года, оба идентификатора 289 и 299 находятся внутри PID1 # 2 (PID1 # 2 относится к многоугольнику # 2) в один балл (с интервалом примерно 45 минут). Я хотел бы иметь некоторую функцию или скрипт для обработки моего набора данных и определения случаев, когда это происходит. Таким образом, я могу определить, какие идентификаторы находятся в каком PID1 в течение определенных c раз (в пределах 12-часового окна), чтобы в конечном итоге получить набор данных, который показывает, сколько раз несколько идентификаторов взаимодействуют в пределах определенного c многоугольника.
Вот образец набора данных с использованием dput для первых 5 строк моего набора данных:
structure(list(X = c("388933", "387022", "507722", "941954",
"506441"), ID = structure(c(12L, 12L, 15L, 1L, 15L), .Label = c("13",
"17", "97", "100", "253", "255", "256", "259", "263", "272",
"281", "289", "294", "297", "299", "329", "337", "339", "344",
"347"), class = "factor"), date = c("Friday, September 1, 2017",
"Friday, September 1, 2017", "Friday, September 1, 2017", "Friday, September 1, 2017",
"Friday, September 1, 2017"), time = c("1:15:29 AM", "4:15:15 AM",
"5:00:16 AM", "5:15:25 AM", "5:15:29 AM"), DOP = c(4.2, 1.4,
3.6, 2.8, 1.6), datetime = structure(c(1504246529, 1504257315,
1504260016, 1504260925, 1504260929), class = c("POSIXct", "POSIXt"
), tzone = "CST6CDT"), p = c(NA_character_, NA_character_, NA_character_,
NA_character_, NA_character_), pid1 = c("2", "2", "2", "1", "2"
), Long = c(763692.811797531, 763674.546077539, 764427.163679506,
767800.455784065, 764420.684442097), Lat = c(3617675.85664874,
3617692.02070415, 3616749.72487458, 3613057.33334349, 3616746.22303673
)), row.names = c("224811", "223697", "277383", "525686", "276768"
), class = "data.frame")
РЕДАКТИРОВАТЬ: Я редактирую это, чтобы показать, как я понял, как это сделать.
uni <- unique(df[,c("ID","date", "pid1")])
df2 <- aggregate(ID~pid1+date, data= uni,length)
Это позволило создать фрейм данных с количеством уникальных идентификаторов на pid1 в день.
Спасибо