claudia keuss

Airbnb Berlin

R | Shiny-App | ggplot
August 2023

This R-Shiny app aims to provide insights into Airbnb accommodation listings in Berlin based on various factors.

At the beginning of my data analytics training i started learning R, building plots with ggplot and creating interactive data explorations using R-Shiny. This R-Shiny app is based on open data from Inside Airbnb and analyzes Airbnb accommodation listings in Berlin from 2023.

 

The analysis explores questions such as:

  • How many accommodations are listed in the different neighbourhoods depending on different factors?
  • What are the price ranges in the neighbourhoods depending on e.g. the type of accommodation or number of beds?
  • What do listings of super hosts have in common?

 

Open data on short-term rentals can serve multiple purposes for various stakeholders. It helps uncover market trends by analyzing pricing patterns, occupancy rates, and popular neighborhoods. Hosts can evaluate competitor offerings and pricing strategies, while city planners can assess the impact of short-term rentals on housing markets and tourism. Additionally, policymakers can use this data to inform regulations on short-term rentals.

Access the R-Shiny app here.

      /*This code shows a generalized approach
of building an app using shiny with these features:

1. Title
2. Sidebarlayout
    a) SelectInput
    b) RadioButtons
    c) SliderInput
    d) CheckBoxes
3. MainPanel
    a) Text
    b) Plot
    c) Dataframe
*/

library(shiny)

ui <- fluidPage(
  titlePanel("App Title"),
  
  sidebarLayout(
    sidebarPanel(
      selectInput("select", "Select Input:", 
                  choices = c("Option 1", "Option 2", "Option 3")),
      
      radioButtons("radio", "Radio Buttons:",
                   choices = c("Choice 1", "Choice 2", "Choice 3")),
      
      sliderInput("slider", "Slider Input:",
                  min = 0, max = 100, value = 50),
      
      checkboxGroupInput("checkboxes", "Checkboxes:",
                         choices = c("Box 1", "Box 2", "Box 3"))
    ),
    
    mainPanel(
      textOutput("text"),
      plotOutput("plot"),
      tableOutput("table")
    )
  )
)

server <- function(input, output) {
  output$text <- renderText({
    "text output"
  })
  
  output$plot <- renderPlot({
    # plot code
  })
  
  output$table <- renderTable({
    # dataframe code
  })
}

shinyApp(ui = ui, server = server)
    

Find the full documentation
and code on my GitHub page.