Извините, что прошу о помощи без каких-либо данных, потому что мне не разрешено делиться данными, над которыми я работаю, а структура воспроизводится с трудом. Вот как выглядит моя база данных:
IDofStay HospitalCode City
1111111 Hospital A City A
2222222 Hospital A City B
1343276 Hospital B City B
3293105 Hospital C City A
1332222 Hospital C City C
Вот скрипты, которые я использовал для этой задачи. Мне нужно выполнить эту задачу более тысячи раз, а затем объединить результаты в таблицу. он состоит в подсчете количества участников от каждой больницы и расчета интенсивности конкуренции в их сфере деятельности
Задача только для одной больницы («Госпиталь А»)
ПЕРВЫЙ ШАГ:
Определение больницы Рынок (город составляет 40% его рынка)
HospitalCode <- "Hospital A"
AreaOfHospitA<-data%>%filter(HospitalCode ==HospitalCode )%>%
group_by(City)%>%count%>%arrange(desc(n))%>%ungroup()%>%
mutate(pct = n/sum(n)*100,
cum_pct = cumsum(pct))%>%filter(cum_pct<=40)
ВТОРОЙ ШАГ
ФИЛЬТРАЦИЯ ОСНОВНЫХ ДАННЫХ ПО ГОРОДАМ, ФОРМИРУЮЩИМ РЫНОК БОЛЬНИЦЫ
Dataframe<-data%>%filter(City%in%AreaOfHospitA$City)
ТРЕТИЙ ШАГ
РАСЧЕТ ПРОЦЕНТА КАЖДОЙ БОЛЬНИЦЫ
PctHop<-Dataframe%>%group_by(HospitalCode)%>%count()%>%
arrange(desc(n))%>%ungroup()%>%
mutate(pct = n/sum(n)*100, cum_pct = cumsum(pct))
РАСЧЕТ КОЛИЧЕСТВА КОНКУРЕНЦИОННЫХ БОЛЬНИЦ С ОТСЕЧЕНИЕМ 1%
PctHopCut_off<-PctHop%>%filter(pct>=1)
nbOfCompet<-nrow(PctHopCut_off)
РАСЧЕТ ИНДЕКСА КОНКУРСА
CompInd<-sum(PctHop$pct^2)/10000
Finaldataframe=data.frame(HospitalCode =HospitalCode ,nbOfCompet=nbOfCompet,CompInd=CompInd)
Наконец, у меня есть такой фрейм данных только для одной больницы (Больница A)
Finaldataframe
HospitalCode nbOfCompet CompInd
1 Hospital A 10 0.2603833
Я должен вычислить эту строку кодов для тысяч больниц в моем основном фрейме данных, а затем объединить их, чтобы иметь такую таблицу ниже:
HospitalCode nbOfCompet CompInd
1 Hospital A 10 0.2603833
Hospital B 8 0.3265626
Hospital C 13 0.1265612