Суммирующие символьные и числовые столбцы для Shiny SelectInput - PullRequest
0 голосов
/ 23 октября 2018

Ниже приведена структура фрейма данных

Village <- c("Location A" , "Location B", "Location C", "Location C", "Location A")
Farmers_Name <- c("Mary", "John", "Grace","Steph", "Richard")
Practiced_MinimumTillage <- c(0,1,1,0,1)
Practiced_Intercropping <- c(1,1,1,0,0)
Practiced_CropRotation <- c(1,1,1,1,0)
Practiced_ApplicationOfManure <- c(0,1,0,1,0)
farmers <- data.frame(Farmers_Name,Village,Practiced_MinimumTillage,Practiced_Intercropping,Practiced_CropRotation,Practiced_ApplicationOfManure)

Продукция фермеров dataframe.

 Farmers_Name    Village Practiced_MinimumTillage Practiced_Intercropping Practiced_CropRotation Practiced_ApplicationOfManure
1         Mary Location A                        0                       1                      1                             0
2         John Location B                        1                       1                      1                             1
3        Grace Location C                        1                       1                      1                             0
4        Steph Location C                        0                       0                      1                             1
5      Richard Location A                        1                       0                      0                             0

Подведение итогов практики фермы, чтобы получить представление об использовании.Таблица частот практик, используемых фермерами на их ферме.

 practices <-  select(farmers,Practiced_MinimumTillage,Practiced_Intercropping,Practiced_CropRotation,Practiced_ApplicationOfManure)
practices %>%
  summarise_all(sum, na.rm=TRUE) %>%
  gather(var,value) %>%
  arrange(desc(value)) %>%
  ggplot(aes(var, value)) + geom_bar(stat = "Identity") + coord_flip()

В кадре данных farmers я бы хотел использовать столбец Деревня для функции selectInput.Таким образом, если человек выбирает «Местоположение A» или «Местоположение B» из выпадающего списка, вышеприведенный график, основанный на таблице частот, отображается в выходных данных.Как мне реструктурировать фрейм данных в соответствии с этим, используя dplyr или data.table?

1 Ответ

0 голосов
/ 23 октября 2018

Это довольно просто, но если у вас есть какие-либо вопросы, прокомментируйте -

Village <- c("Location A" , "Location B", "Location C", "Location C", "Location A")
Farmers_Name <- c("Mary", "John", "Grace","Steph", "Richard")
Practiced_MinimumTillage <- c(0,1,1,0,1)
Practiced_Intercropping <- c(1,1,1,0,0)
Practiced_CropRotation <- c(1,1,1,1,0)
Practiced_ApplicationOfManure <- c(0,1,0,1,0)
farmers <- data.frame(Farmers_Name,Village,Practiced_MinimumTillage,Practiced_Intercropping,
                      Practiced_CropRotation,Practiced_ApplicationOfManure)

shinyApp(
  ui = fluidPage(
    selectInput("village", "Select Village", choices = unique(farmers$Village)),
    plotOutput("some_plot")
  ),
  server = function(input, output, session) {

    output$some_plot <- renderPlot({
      filter(farmers, Village == input$village) %>%
      select(Practiced_MinimumTillage,Practiced_Intercropping,Practiced_CropRotation,
             Practiced_ApplicationOfManure) %>%
      summarise_all(sum, na.rm=TRUE) %>%
      gather(var,value) %>%
      arrange(desc(value)) %>%
      ggplot(aes(var, value)) + geom_bar(stat = "Identity") + coord_flip()
    })
  }
)
...