Имам набор от данни от 20 000 отделни случая, всеки с начална дата на заболяването („дата на начало“). Всеки случай живее в групов дом и искам да групирам случаите въз основа на началната дата на заболяването в дома.
Затова искам да идентифицирам първия случай, който се появи в дома. Ако се появи друг(и) случай(и) в рамките на 14 дни след първия, искам да ги добавя към същия клъстер. Ако се появи друг случай в рамките на 14 дни от всеки друг случай в клъстера, искам да ги добавя към същия клъстер. Бих спрял да добавям случаи към клъстера, след като друг случай беше на повече от 14 дни от последния; в този момент ще се формира нов клъстер и процесът ще се рестартира, докато всички бъдат сортирани. „Началната дата“ на клъстера ще бъде датата на началото на заболяването на първия случай, добавен към клъстера, а крайната дата ще бъде 14 дни след добавянето на последния случай към клъстера.
Ето някои фиктивни данни:
dummy <- data.frame(case = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19),
onsetdate = as.Date(c("2012-08-30", "2012-09-03", "2012-09-09", "2012-09-17", "2012-11-01", "2012-11-05", "2012-11-30", "2012-08-30", "2012-09-03", "2012-10-09", "2012-10-17", "2012-10-30", "2020-12-26", "2020-12-23", "2020-12-30", "2020-12-25", "2021-04-22", "2021-05-03", "2021-05-10")),
position = c("Resident", "Staff", "Resident", "Staff", "Staff", "Resident", "Resident", "Staff", "Resident", "Staff", "Staff", "Resident", "Resident", "Resident", "Staff", "Resident", "Staff", "Staff", "Resident") ,
grouphome = c("Group Home 1", "Group Home 1","Group Home 1","Group Home 1","Group Home 1","Group Home 1","Group Home 1","Group Home 1","Group Home 2","Group Home 2","Group Home 2","Group Home 2", "Group Home 3", "Group Home 3","Group Home 3","Group Home 3","Group Home 3","Group Home 3","Group Home 3")
)
И изходът ще изглежда така:
result <- data.frame(grouphome = c("Group Home 1", "Group Home 1","Group Home 1","Group Home 2","Group Home 2", "Group Home 3", "Group Home 3"),
clusterNumber = c("1", "2", "3", "1", "2", "1", "2"),
clusterStart = as.Date(c("2012-08-30", "2012-11-01", "2012-11-30", "2012-09-03", "2012-10-09", "2020-12-23", "2021-04-22")),
cases = c("5", "2", "1", "1", "3", "4", "3"))
Благодаря ви много предварително