R блестящая пузырьковая карта листовки по количеству

#r #shiny #leaflet

#r #блестящий #листовка

Вопрос:

Я пытаюсь создать блестящее приложение, которое использует некоторые географические данные, которые я сохранил в MySQL. В настоящее время данные содержат список долгот и широт (местоположения клиента), возраст клиента, пол клиента и другие различные демографические данные. Например:

 
 -------- ------- -------- --------- 
| Member | Long  |  Lat   | Gender  |
 -------- ------- -------- --------- 
| A      |    34 |   -118 | M       |
| B      |    34 |   -118 | F       |
| C      |    41 |    -74 | M       |
| D      |    39 |    -77 | M       |
 -------- ------- -------- --------- 

  

Я хочу использовать leaflet для создания пузырьковой карты для местоположений — больший пузырь в местоположении означает, что в этой области присутствует больше клиентов. Кажется, что функция addCircles делает это довольно хорошо, но проблема в том, что у меня нет подсчета количества клиентов в каждом местоположении для присвоения radius параметру — каждая строка в моей таблице представляет информацию для конкретного клиента, а не местоположение. Есть ли способ получить эту информацию?

Мое лучшее предположение — создать новую таблицу, в которой каждая строка представляет значения для разной долготы и широты, а затем использовать столбец count для подсчета количества раз, когда это местоположение появляется среди клиентов, но я не уверен, что это лучший способ, поскольку он предполагает создание новой таблицы, и я бынеобходимо создать дополнительные столбцы, такие как «количество мужчин» и «количество женщин» для каждого фактора, который я хочу учесть. А что, если я захочу настроить свою карту для женщин в возрасте 40-50 лет? Количество столбцов, которые я должен был бы создать, легко превысило бы 100..

Комментарии:

1. Вам не нужно предварительно вычислять каждый столбец, вы можете динамически вычислять количество, используя входные данные, которые вы задаете в shiny, затем агрегировать по широте и построить график.

2. Убедитесь, что длина широты приближена, как в вашем примере, поэтому группировка по этим числам объединит несколько членов.

3. Как бы я это сделал? Я читал, что после использования полей выбора я могу настроить свой df , чтобы отфильтровывать записи, например df1 <- df[df$gender == input$gender, ] , но я все еще не знаю, как агрегировать по широте и длине

4. Взгляните на dplyr::group_by и dplyr::summarise . Также проверьте, как использовать shiny::reactive для фильтрации вашего набора данных в соответствии с вводом