#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
для фильтрации вашего набора данных в соответствии с вводом