1

私は光沢のあるアプリを作成するのが初めてで、リーフレット パッケージを使用するのは初めてです。ユーザー入力を取得し、選択したユーザー変数の集計値に基づいてコロプレス マップをプロットする光沢のあるアプリを作成しようとしています。

私のサンプル データセットには次の変数があります。

私のアプリは、ユーザー名または郡名のいずれかを選択するようにユーザーに求めます。この選択に基づいて、内部的に州名または郡名を使用してデータセットをグループ化します。

次に、ユーザーは変数から 1 つまたは複数を選択します。

これに基づいて、これらの変数の値の合計にコロプレス マップをプロットし、これらの値を下の表に示します。

addPolygons メソッドを使用してマップをプロットできません。これには形状ファイルを使用する必要がありますか? このコードのどこが間違っていますか?

library(dplyr)
library(shiny)
library(readr)
library(leaflet)
library(lazyeval)
library(rgdal)

setwd("E:/Data")


ui <- fluidPage(
    titlePanel("Filters"),
    sidebarLayout(
      sidebarPanel(
        radioButtons("level", "Select the Level", choices = c("State", "County"),selected = "State" ,inline = TRUE),
        selectInput("variable", "Variable Name", choices = NULL, multiple = FALSE, selectize = TRUE, selected = "medianage")
      ),
      mainPanel(
        leafletOutput("map"),
        dataTableOutput("heatmapdata")
      )
    )

  )


server <- function(input, output, session) {

  read_csv(file="Sample.csv") %>% 
          select(statename, latitude, longitude, countyname, medianage, asianpopulation, otherpopulation) -> heatmapData -> hd

  variable = c()
  group = c()

  heatmapData <- data.frame(heatmapData)
  hd <- heatmapData

  heatmapdata_1 <- select(heatmapData, -c(latitude, longitude))
  heatmapdata_2 <- select(heatmapdata_1, -c(statename, countyname))

  updateSelectInput(session, "variable", choices = sort(unique(colnames(heatmapData))), selected = "medianage")

  heatmapdata_2 <- heatmapdata_1

  datasetLevel.group <- function(df, grp.var) {
    df %>% group_by_(grp.var) %>%
      summarise_each(funs(sum)) -> df

    df
  }

  datasetLevel <- reactive({
    heatmapdata_2 <- heatmapdata_1
    inputvariable <- c("medianage")

    if (input$level == "State") {
      inputlevel = c("statename")
      heatmapdata_2 <- select(heatmapdata_2, -c(countyname))
    }

    if (input$level == "County") {
      inputlevel = c("countyname")
      heatmapdata_2 <- select(heatmapdata_2, -c(statename))
    }

    sm <- datasetLevel.group(heatmapdata_2, inputlevel)

    group <- inputlevel
    variable <- inputvariable

    l_hd <- list(sm, inputlevel, input$variable)
    l_hd

  }) 

  output$map <- renderLeaflet(
    {
      leaflet() %>% addTiles(options=tileOptions(minZoom = 3, maxZoom = 10)) %>%
        setView(lng = -98.35, lat = 39.5, zoom = 4) %>% 
        setMaxBounds( -180, 5, -52,  73) 
    }
  )

  output$heatmapdata <- renderDataTable(
        select_(datasetLevel()[[1]], datasetLevel()[[2]], datasetLevel()[[3]]),
      options = list(pageLength=5,
                     scrollX=TRUE,
                     lengthMenu = c(5, 10, 25, 100),
                     searching=FALSE)
  )

  observe({
    pal <- colorQuantile("YlOrRd", NULL, n = 20)
    leafletProxy("map", data = datasetLevel()[[1]]) %>%
      clearMarkers() %>%
      clearMarkerClusters() #%>%
#       addPolygons(data = datasetLevel()[[1]],
#                   fillColor = ~pal(variable), 
#                   fillOpacity = 0.8, 
#                   color = "#BDBDC3", 
#                   weight = 1)
  })



 }

shinyApp(ui = ui, server = server) 

エラーが発生したため、addPolygons コードをコメントアウトしました。選択した変数の集計値に基づいて色分けされたマップを取得するために頭を悩ませています。

データ ファイルは次の場所にあります: https://drive.google.com/file/d/0B4PQcgewfQ3-MF9lNjU4clpUcUk/view?usp=sharing

これに関するヘルプは本当に役に立ちます。ありがとう。

4

0 に答える 0