Chapter 3 Botanic Gardens Survey Analysis

The primary concern of this research is to explore how and why people use the Singapore Botanic Gardens.

An intercept survey was conducted among the visitors of the Gardens. The survey aims to capture visitors’ usage of the Gardens and their perceptions of the Gardens. Visitors of the Gardens were randomly approached to participate in the survey. Surveys were conducted within a week across both weekdays and weekends, in continuous time periods from 6AM to 10PM, and in different locations within the Northern (67 surveys) and Southern (66 surveys) cores of the Gardens (Figure 1). Survey responses were collected from the visitors during their visit in the Gardens to reflect their ‘in-the-moment’ experiences. Surveys were filled up by the surveyors through ‘a walk and talk’ approach or by the visitor filling up the digital survey themselves.

3.1 Loading data from googlesheets

data <- read_sheet("1BFAqMUUn3mDq0OdStNYnWZh0Rr392LXfPMJuXLKMXr0")
## Reading from 'Botanic Gardens Intercept Survey'
## Range "'Singapore Botanic Gardens Survey'"

A preview of the dataset:

knitr::kable(data[1:5,])
When was the last time you have visited the Singapore Botanic Gardens? How often do you normally visit this place? How long do you plan to stay here today? What is your reason for visiting the Singapore Botanic Gardens today? Who are you here with today? How did you get here today? What do you like about this place? What do you not like about this place? If you could change or add something to the park, what would that be? I am satisfied with the layout of the Singapore Botanical Gardens. It is easy to find my way around the gardens. It is easy to get to the gardens. I am satisfied with the overall flora and fauna of the gardens. There is a variety of food available at the gardens. The food available at the gardens is affordable. The garden is crowded. Seating areas are available (e.g. benches and chairs) across the gardens. Sheltered areas area available across the gardens. There are many different activities to do within the gardens. I feel safe within the gardens. What is your age? What gender do you identify as? What neighbourhood do you live in? Are there enough easily accessible green areas in the city? Last one! Is there anything else you would like to share about the Singapore Botanic Gardens - something you absolutely love or hate about this park? (Internal) What section of the park was this survey taken in? (Internal) What is your (interviewer) name? (Internal) Any other remarks you have as an interviewer for this particular survey Submitted At Token
Less than a week ago Once a week 30 minutes to an hour To exercise, To be with my children Alone Car, MRT, Taxi Flowers! It is hot! Bike paths 5 4 3 5 3 4 2 4 4 3 4 NA Male Upper Changi TRUE NA Northern (nearest to Botanic Gardens MRT) Atr NULL 1539334777 93dd8b8984686e04ec37ab1cf9cb0fdd
Less than a week ago More than once a week < 15 minutes To relax, To exercise Alone MRT Test Test Test 2 3 4 3 4 3 4 3 3 3 3 25 Female Test FALSE Test Northern (nearest to Botanic Gardens MRT) Test Test 1539385874 80bef65279d1d12a76781b85cb5f9a0b
Less than a week ago More than once a week > 1 hour To exercise Alone Car Landscape Some construction works More shelters 5 5 5 5 5 4 4 3 2 4 5 45 Female Bishan TRUE Love the people here Northern (nearest to Botanic Gardens MRT) Aishah She comes here everyday and recognises the regulars, Super friendly, will come despite the rain 1539387428 2336e1f367eebaa1d9487e5bd03076c3
Less than a week ago Once a week > 1 hour To meet others, To exercise Siblings NA Nature and environment and it’s very big sometimes I get lost Nothing Nothin lg 4 5 5 4 4 3 3 3 3 4 4 60 Female Bukit Timah TRUE No Northern (nearest to Botanic Gardens MRT) Aishah Slightly impatient to get it done. Had to explain certain terms in questionnaire esp open ended parts. 1539388179 8b7c852a65acc7f03ee9d54cc6f3b73c
Within the last month 1-3 times a month 30 minutes to an hour To be with my children, To exercise, To relax Children On foot, MRT It’s huge Runners footseps Intro more animal attraction 4 4 4 4 3 3 4 3 3 3 4 35 Male By timah TRUE Lake Northern (nearest to Botanic Gardens MRT) Aishah Kid likes roosters 1539388698 74db6c9551f0f6e24432078c4e9cffc1

3.2 Cleaning up data

3.2.1 Column names

clean_names() modifies column names with spacing within, replacing each spacing with an underscore. This makes it easier to reference the column name later on.

data <- data %>% 
  clean_names()

As each column name is a question from the survey, we shorten the column names by using the rename() function.

data <- data %>% 
  rename(last_visit = when_was_the_last_time_you_have_visited_the_singapore_botanic_gardens,
         frequency_visit = how_often_do_you_normally_visit_this_place,
         length_visit = how_long_do_you_plan_to_stay_here_today,
         reason_visit = what_is_your_reason_for_visiting_the_singapore_botanic_gardens_today,
         company_visit = who_are_you_here_with_today,
         transport_mode = how_did_you_get_here_today,
         like = what_do_you_like_about_this_place,
         dislike = what_do_you_not_like_about_this_place,
         change = if_you_could_change_or_add_something_to_the_park_what_would_that_be,
         satisfaction_layout = i_am_satisfied_with_the_layout_of_the_singapore_botanical_gardens,
         satisfaction_wayfinding = it_is_easy_to_find_my_way_around_the_gardens,
         satisfaction_access = it_is_easy_to_get_to_the_gardens,
         satisfaction_florafauna = i_am_satisfied_with_the_overall_flora_and_fauna_of_the_gardens,
         satisfaction_food_variety = there_is_a_variety_of_food_available_at_the_gardens,
         satisfaction_food_affordability = the_food_available_at_the_gardens_is_affordable,
         satisfaction_crowdedness = the_garden_is_crowded,
         satisfaction_seating = seating_areas_are_available_e_g_benches_and_chairs_across_the_gardens,
         satisfaction_shelter = sheltered_areas_area_available_across_the_gardens,
         satisfaction_activities = there_are_many_different_activities_to_do_within_the_gardens,
         satisfaction_safety = i_feel_safe_within_the_gardens,
         age = what_is_your_age,
         gender = what_gender_do_you_identify_as,
         neighhbourhood = what_neighbourhood_do_you_live_in,
         accessible_green_space = are_there_enough_easily_accessible_green_areas_in_the_city,
         free_share = last_one_is_there_anything_else_you_would_like_to_share_about_the_singapore_botanic_gardens_something_you_absolutely_love_or_hate_about_this_park,
         park_section = internal_what_section_of_the_park_was_this_survey_taken_in,
         interviewer = internal_what_is_your_interviewer_name,
         interviewer_remarks = internal_any_other_remarks_you_have_as_an_interviewer_for_this_particular_survey) %>% 
  select(-token)

3.2.2 Filter out “test” rows

These are rows of data where the surveyors made trial entries.

data <- data %>% 
  slice(-1) %>% 
  filter(!str_detect(interviewer, "Test")) %>% 
  filter(!str_detect(interviewer, "test"))

data %>% 
  group_by(interviewer) %>% 
  summarise(count=n()) %>% 
  arrange(desc(count))
## # A tibble: 20 x 2
##    interviewer  count
##    <chr>        <int>
##  1 Aishah          17
##  2 SK              17
##  3 Adreena         12
##  4 Kendrick         9
##  5 Jolene           8
##  6 Jonathan         7
##  7 Norio            7
##  8 Aizat            6
##  9 Alex             6
## 10 Deviana          6
## 11 Fatin            6
## 12 Irwan            6
## 13 Kana             6
## 14 tommy            6
## 15 Ka kui           4
## 16 Wyton            4
## 17 Badrul           3
## 18 Ka Kui           2
## 19 Kendrick Goh     1
## 20 Mister           1

3.2.3 Recode typos

Combining the use of mutate and recode works well in removing typos.

data <- data %>% 
  mutate(interviewer = recode(interviewer,
                              "Kendrick Goh"="Kendrick",
                              "Ka kui"="Ka Kui")) %>% 
  filter(interviewer!="Mister")

3.2.4 Changing timezone

Seems like the timezone of the entries are not correct. mutate and with_tz works well in recoding the timezone of the time column.

Plotting a simple barchart of the number of entries collected in each hour shows the temporal distribution of the responses collected. More responses were collected from 8 to 10 AM and from 5 to 7 PM, than in other time periods of the day. This could constitute towards a bias in the results as lesser responses speak of people who visit during the afternoon.

data <- data %>% 
  mutate(submitted_at = with_tz(submitted_at, "Singapore"))

data %>% 
  mutate(hour=hour(submitted_at)) %>% 
  ggplot(aes(hour))+
  geom_histogram(binwidth=1)+
  theme_fivethirtyeight() + 
  labs(title="How many surveys were collected in each hour of a day?", y="",x="") +
  theme(plot.title = element_text(size=14, hjust=0.5))

3.2.5 Convert character variables to ordered factors

Converting character variables to ordered factors is useful for ordinal data such as frequency of visit or last visit, in this survey’s context. This matters as the order we define is what the plot will display, and we want to present an order that makes sense, eg. least frequent to most frequent along the x-axis or y-axis of the plot.

visit_levels <- c("Less than a week ago","Within the last month","Within the last year","Longer than a year ago")
data <- data %>% 
  mutate(last_visit=parse_factor(last_visit,levels=visit_levels,ordered=T))

data %>% 
  filter(last_visit!="NA") %>% 
  ggplot(aes(last_visit)) +
  geom_bar()+
  theme_fivethirtyeight() + 
  labs(title="When was your last visit to the Gardens?", y="",x="") +
  theme(plot.title = element_text(size=14, hjust=0.5))+
  coord_flip()

freq_visit_levels <- c("Less than every month","1-3 times a month","Once a week","More than once a week","NA")
data <- data %>% 
  mutate(frequency_visit=parse_factor(frequency_visit,levels=freq_visit_levels,ordered=T))

3.2.6 Adding id column

The id column helps in joining of data or the splitting of multiple responses variables as seen in the next section.

data <- data %>% 
  rownames_to_column("id") 

3.2.7 Split multiple responses variables into separate dummy variables

This step is needed because of the multiple response questions in the survey. For example, in questions such as “how did you get here today?”, people could choose more than one option. If they chose “car” and “walk”, the response in google sheets looks like “car, walk”. That poses a problem when we want to do counts of individual choices. For example, how many people went to the gardens by car?

The resulting data is shown in the table below.

The advantage of this step is that it appends the “expanded” transport variables as separate columns to the existing dataset, allowing for further intervariable plots such as count of transport mode by frequency of visit.

table <- data %>% 
  separate_rows(transport_mode,sep=", ") %>% # split a column and append it into the dataset 
  group_by(id) %>% # shows the mode column and the id column 
  dplyr::count(transport_mode) %>% 
  spread(transport_mode, n, fill=0) %>% # shows the matrix of mode by id
  select(-V1) %>% 
  rename_at(2:11, funs(paste0("transport_", .))) %>% #rename columns by adding transport. in front of each mode as a column name
  right_join(data) %>% #join with data
  select(-transport_mode)
## Joining, by = "id"
knitr::kable(table)
id transport_Bicycle/Personal mobility device transport_Bus transport_Car transport_Grab transport_Lorry transport_Motorbike transport_MRT transport_On foot transport_Taxi transport_ last_visit frequency_visit length_visit reason_visit company_visit like dislike change satisfaction_layout satisfaction_wayfinding satisfaction_access satisfaction_florafauna satisfaction_food_variety satisfaction_food_affordability satisfaction_crowdedness satisfaction_seating satisfaction_shelter satisfaction_activities satisfaction_safety age gender neighhbourhood accessible_green_space free_share park_section interviewer interviewer_remarks submitted_at
1 0 0 1 0 0 0 0 0 0 0 Less than a week ago More than once a week > 1 hour To exercise Alone Landscape Some construction works More shelters 5 5 5 5 5 4 4 3 2 4 5 45 Female Bishan TRUE Love the people here Northern (nearest to Botanic Gardens MRT) Aishah She comes here everyday and recognises the regulars, Super friendly, will come despite the rain 1539387428
2 0 0 0 0 0 0 0 0 0 1 Less than a week ago Once a week > 1 hour To meet others, To exercise Siblings Nature and environment and it’s very big sometimes I get lost Nothing Nothin lg 4 5 5 4 4 3 3 3 3 4 4 60 Female Bukit Timah TRUE No Northern (nearest to Botanic Gardens MRT) Aishah Slightly impatient to get it done. Had to explain certain terms in questionnaire esp open ended parts. 1539388179
3 0 0 0 0 0 0 1 1 0 0 Within the last month 1-3 times a month 30 minutes to an hour To be with my children, To exercise, To relax Children It’s huge Runners footseps Intro more animal attraction 4 4 4 4 3 3 4 3 3 3 4 35 Male By timah TRUE Lake Northern (nearest to Botanic Gardens MRT) Aishah Kid likes roosters 1539388698
4 0 0 1 0 0 0 0 0 0 0 Less than a week ago Once a week > 1 hour To exercise, To relax, To listen to and observe nature Alone It is very green Construction Nothing 5 5 4 5 3 3 3 3 3 5 5 30 Female Tiong Bahru TRUE I love how it is so close to the city, yet I can still feel this closeness to nature Northern (nearest to Botanic Gardens MRT) Adreena Interviewee hesitated for a while, but then kindly agreed 1539388821
5 0 0 0 0 0 0 0 1 0 0 Less than a week ago More than once a week > 1 hour To exercise, To relax, To walk the dog Alone, Dog Scenery, fresh air No No 5 5 5 5 3 3 4 4 4 4 5 65 Female Farrer rd TRUE No Southern (nearest to Gleneagles Hospital) SK She was here with her dog and lives nearby 1539388996
6 0 0 0 0 0 0 1 0 0 0 Less than a week ago More than once a week > 1 hour To meet others Alone Is green Nil Children playground 5 5 4 5 3 3 4 3 3 3 4 35 Male Sengkang TRUE Nothing Northern (nearest to Botanic Gardens MRT) Adreena He was heading to work on a saturday morning, so he put “to meet others” as the reason 1539389262
7 0 1 0 0 0 0 0 0 0 0 Less than a week ago Once a week > 1 hour To exercise, To listen to and observe nature Friends Ambience, greenery nature Too sanitized More seasonal flowering plants around 5 4 5 4 3 2 3 4 4 4 5 60 Male Queenstown FALSE It’s a nice place Southern (nearest to Gleneagles Hospital) SK Man was in a rush to start group exercise 1539389304
8 0 0 0 0 0 0 0 1 0 0 Less than a week ago 1-3 times a month 30 minutes to an hour To get inspiration, To take photographs Friends The calm environment Can’t play frisbee Being able to play frisbee 5 4 3 5 4 4 3 4 2 4 5 20 Male Bukit Timah FALSE NA Northern (nearest to Botanic Gardens MRT) Aishah guys wanted to be able to play ultimate frisbee here but then park rangers will come and stop them. But they’ll play again once the park ranger goes away. 1539389423
9 0 0 1 0 0 0 0 0 0 0 Less than a week ago More than once a week > 1 hour To relax Partner Qiang in the morning No No 3 4 4 4 1 1 3 2 3 3 3 70 Male Havelock TRUE Everything is nice Southern (nearest to Gleneagles Hospital) SK Old man not very fluent in English. Survey feels a bit long. 1539389722
10 0 0 0 0 0 0 1 0 0 0 NA NA 30 minutes to an hour To exercise, To relax, To meet others Friends Green No No 5 5 5 5 3 3 3 4 3 3 5 65 Female Not mentioned TRUE She likes it here in general Northern (nearest to Botanic Gardens MRT) Adreena I translated to her in Mandarin half of the interview, then she left with her friends and family members 1539389964
11 0 0 0 0 0 0 1 0 0 0 Less than a week ago Once a week < 15 minutes To exercise Friends The animals here Very hot Shelter 4 3 4 4 4 4 3 3 3 4 4 20 Female Sengkang TRUE Nil Northern (nearest to Botanic Gardens MRT) Aishah There’s a Hockey stadium on the other side of the park so they’re heading there 1539390128
12 0 0 1 0 0 0 0 0 0 0 Less than a week ago More than once a week 30 minutes to an hour To exercise, To relax, To listen to and observe nature Partner Clean, fresh, refreshing and good scenery and safe Sometimes it’s too crowded Should have extra coffeeshops in the gardens, Jacob’s garden is only for children 5 3 5 5 4 2 3 5 5 3 5 55 Male Thomson TRUE Best thing is the way the government sets a budget for maintaining this place. A lot of maintenance works here so it’s beautiful. Southern (nearest to Gleneagles Hospital) SK Actually a couple, but only logged one response. Husband sounded foreign, wife sounded local. Feels very strongly about gardens being safe. 1539390319
13 0 0 0 0 0 0 0 1 0 0 Within the last month More than once a week 15 - 30 minutes To exercise, To meditate Alone Greenery and concerts I’ve seen snakes around. Hawker center near the entrance should come back. It was affordable. Info counter is not helpful about events Hawker center should come back. 5 5 5 5 1 2 4 2 3 4 4 60 Female Botanic area TRUE People in the info counter are not helpful. Know nothing about activities here like concerts. Southern (nearest to Gleneagles Hospital) SK Female sounded foreign, felt mainly safe except for snakes 1539390775
14 0 0 1 0 0 0 0 0 0 0 Less than a week ago Once a week > 1 hour To exercise Friends National treasure NA More drink or food kiosks outside visitor centres 5 4 4 4 1 2 2 3 3 4 4 53 Male Bukit timah TRUE More food Northern (nearest to Botanic Gardens MRT) Aishah Very concerned about food kiosks and drinks. Wants more of them around. 1539391044
15 0 0 1 0 0 0 0 0 0 0 Less than a week ago More than once a week > 1 hour To listen to and observe nature, To take photographs, To exercise, To relax, To escape from the city, To walk the dog Alone The flora and fauna in the garden and the beauty of the garden There should be more toilets in the garden Nil 5 5 5 5 2 1 2 5 5 3 5 53 Female Holland V TRUE Maybe to have affordable bistro like cafes and local snack kiosks like Old Chang Kee, Mr Bean etc that will appeal to the tourists and hungry locals Northern (nearest to Botanic Gardens MRT) Adreena She’s really friendly!! We talked for quite a while 1539391076
16 0 0 0 0 0 0 0 0 1 0 Within the last year Less than every month 30 minutes to an hour To listen to and observe nature Alone Tropical trees and different variety of landscaping. Nice maintenance and nice people Restaurants not good enough The food in the restaurant both type and price 4 4 4 5 2 4 2 4 3 2 5 65 Male Taiwan FALSE No Southern (nearest to Gleneagles Hospital) SK Taiwanese who comes here whenever he comes to Singapore. Thinks there should be more food variety. 1539391168
17 0 0 1 0 0 0 0 0 0 0 Less than a week ago Once a week > 1 hour To exercise, To relax, To escape from the city, To listen to and observe nature Partner Great oasis keep it green parking great Dark at night Light up the area more at night 4 4 4 5 5 5 2 5 5 5 5 60 Male Newton TRUE There should be more lights at night Southern (nearest to Gleneagles Hospital) SK Indian couple who asked me to walk with them. Logged the husband’s responses. Feels very strongly about lights at night. 1539391608
18 0 0 0 0 0 0 1 0 0 0 NA NA > 1 hour To relax Alone Very naturic No Idk 5 5 5 5 4 4 5 4 4 4 4 35 Female Yio Chu Kang TRUE I’m not sure Northern (nearest to Botanic Gardens MRT) Aishah Unsure about the questions coz first time here. 1539392064
19 0 0 0 0 0 0 0 1 0 0 Less than a week ago Once a week 30 minutes to an hour To relax, To be with my children Partner, Children The whole surroundings the environment the green and it is quiet compared to other parks No No 5 5 4 5 4 3 3 5 3 4 5 50 Male Steven road TRUE Grateful and blessed to be living around here Southern (nearest to Gleneagles Hospital) SK With wife and daughter. Walked with him and did the survey 1539392159
20 0 0 1 0 0 0 0 0 0 0 Less than a week ago More than once a week > 1 hour To exercise, To relax Partner Hard to find in the city, nearby, alot of activities, observe people Not enough chairs Add more chairs and benches 5 5 5 5 2 3 4 2 2 4 5 70 Male Nearby Nukit Timah TRUE He loves it! Northern (nearest to Botanic Gardens MRT) Adreena It was a verbal questionnaire. He was friendly and approachable 1539392227
21 0 0 1 0 0 0 0 0 0 0 Within the last year Less than every month > 1 hour To exercise, To relax, To escape from the city, To listen to and observe nature Partner Diversity of nature. The shapes and versatility of the paths. Sometimes the crowd No 5 4 5 5 3 3 3 3 4 4 5 55 Male Novena TRUE I think it’s great to have this large garden in the middle of the city. Great that the government didn’t build buildings here instead. Southern (nearest to Gleneagles Hospital) SK Foreign couple who used to live in Shanghai. Husband Caucasian, wife Asian. 1539392725
22 0 0 1 0 0 0 0 0 0 0 Less than a week ago 1-3 times a month > 1 hour To relax, To be with my children Children, Partner Piece of greenery in Singapore. Different plants to see No No 4 4 4 5 3 3 3 4 3 3 5 40 Male Queenstown TRUE Nope Southern (nearest to Gleneagles Hospital) SK Father in a family with two kids, feeding fishes at Swan lake 1539393138
23 0 0 0 0 0 0 1 0 0 0 Longer than a year ago Less than every month 15 - 30 minutes To exercise, To escape from the city, To listen to and observe nature, To get inspiration Alone Quiet Unfamiliar faces Nothing 5 4 4 4 1 1 3 3 2 3 4 25 Female Holland TRUE Nil Northern (nearest to Botanic Gardens MRT) Aishah Nil 1539393343
24 0 0 1 0 0 0 0 0 0 0 Less than a week ago More than once a week > 1 hour To exercise, To relax, To listen to and observe nature Partner Natural, fresh air and quiet. Can see birds. Dog poop More space for kids to play. 4 3 4 3 3 2 4 3 2 3 4 50 Male Newton FALSE Green gardens are important, green lungs of the city. Maintenance is important and maintaining capacity for tourists Southern (nearest to Gleneagles Hospital) SK Couple going for a walk 1539393756
25 0 0 1 0 0 0 0 0 0 0 Longer than a year ago Less than every month > 1 hour To listen to and observe nature, To relax Alone Greenery, peaceful and tranquil People should not feed the animals More toilets, more benches 5 5 5 5 3 3 3 3 3 5 5 20 Female Bishan TRUE I love the green spaces Northern (nearest to Botanic Gardens MRT) Aishah Girl is a nature lover 1539393786
26 0 0 1 0 0 0 0 0 0 0 Less than a week ago More than once a week > 1 hour To exercise Alone Greenery, fresh air, nice envt, alot if good things - More signs esp for tourists 5 5 5 4 3 3 3 3 3 5 5 65 Male Holland Road TRUE This is my second home Northern (nearest to Botanic Gardens MRT) Adreena I felt I was interrupting him alot as I could not comprehend his tempo of conversation. But he was very friendly in general 1539393820
27 0 0 0 0 0 0 0 0 1 0 Within the last year Less than every month > 1 hour To listen to and observe nature, To exercise, To relax, To meet others Friends Greenery, exercise Nothing! More sheltered spaces for rainy days 4 5 4 4 2 2 2 4 4 3 5 30 Female Hougang TRUE NA Northern (nearest to Botanic Gardens MRT) Adreena Very friendly people from law school!! 1539394189
28 0 0 0 0 0 0 1 0 0 0 Longer than a year ago Less than every month > 1 hour To exercise, To meet others, To listen to and observe nature, To get inspiration Friends Quite green and pleasant Signage is lousy. They don’t tell the directions properly! Nothing much, the signages pls! 4 3 5 5 3 2 4 5 3 5 5 35 Female Kent ridge TRUE NA Northern (nearest to Botanic Gardens MRT) Aishah Very nice people from law school who are passionate about survey and cheap food 1539394195
29 0 0 1 0 0 0 0 0 0 0 Longer than a year ago Less than every month 30 minutes to an hour To listen to and observe nature, To exercise Children, Partner Big open natural spaces The weather No 5 3 4 5 1 2 3 4 3 2 5 30 Male Telok belangah TRUE Nope Southern (nearest to Gleneagles Hospital) SK Couple with baby in pram. Second time here, first time was a few years ago 1539394477
30 0 0 0 0 0 0 1 0 0 0 Longer than a year ago Less than every month > 1 hour To take photographs Alone The diversity of the plants and trees Some of the signs/labels are small or not available with the flowering plants 攼㹤愼㸰戼㹤攼㹤戼㸸㠼㸱 4 4 4 4 4 3 2 4 4 4 4 35 Female Choa Chu Kang TRUE I love that SBG is a Heritage Site now! Northern (nearest to Botanic Gardens MRT) Jolene She was trying to photograph a white flower and said she’s doing this for her diploma course. She doesn’t come to the gardens often and this is a good reminder to come to the gardens more 1539396545
31 0 0 1 0 0 0 0 0 0 0 Less than a week ago 1-3 times a month > 1 hour To exercise, To relax, To listen to and observe nature, To get inspiration Partner Greenery I dislike the numerous trucks driving around. I don’t know what they do. Disrupts my view and mood. The endless construction here and there. Less noise, less vehicles 4 5 5 5 3 3 2 4 3 2 5 60 Male Jurong west TRUE No, I need to get going Northern (nearest to Botanic Gardens MRT) Jolene Opinionated old man who frequents the garden and is getting annoyed with the garden’s construction and truck vehicles 1539397085
32 0 0 0 0 0 0 1 0 0 0 Less than a week ago Less than every month > 1 hour To relax, To meet others, To escape from the city Friends Very paceful NA Nothing 5 3 5 5 3 3 4 3 5 3 5 26 Male Italy TRUE The athmosphere Northern (nearest to Botanic Gardens MRT) Jolene Two Italians, first time in Singapore, was looking for an area with trees from all over the world within a sheltered area 1539397537
33 0 0 0 0 0 1 0 0 0 0 Less than a week ago More than once a week > 1 hour To escape from the city Alone Nature, peace of mind and soul connecting earth and infinity. Rules and Regulations Adult theme park 4 3 4 5 4 3 3 3 4 4 4 30 Male Malaysia TRUE Love about the garden structure. Northern (nearest to Botanic Gardens MRT) Jolene He works here as an offences reporter from CISCO. He’s Malaysian and travels to Singapore from Johor Everyday. Been working here for 4-6 months 1539398644
34 0 0 0 0 0 0 1 0 0 0 Within the last year Less than every month > 1 hour To relax, To meet others Partner Beautiful greenery, good eateries Mosquitoes for sure Rental picnic maps and appropriate food/drinks for sale 5 4 5 5 4 3 2 4 4 4 5 25 Male Upp Bukit timah TRUE It’s cook Northern (nearest to Botanic Gardens MRT) Jolene Youth at a restaurant 1539414086
35 0 0 0 0 0 0 1 0 0 0 Within the last month Less than every month 30 minutes to an hour To take photographs Alone Picturesque It can get too crowded More orchid 3 3 4 4 2 2 5 3 3 3 4 25 Male Katong TRUE No Southern (nearest to Gleneagles Hospital) Badrul Nothing in particular 1539423983
36 0 0 1 0 0 0 0 0 0 0 Within the last month 1-3 times a month 30 minutes to an hour To escape from the city, To relax, To be with my children Children Can do activity with my son Too crowded sometimes Not sure 4 4 3 4 3 3 4 4 4 2 4 45 Female Paya Lebar TRUE No cars Southern (nearest to Gleneagles Hospital) Badrul Interviewee quite undecisive with her answers 1539425239
37 0 0 0 0 0 0 1 0 0 0 NA NA > 1 hour , Sightseeing Alone Green and old Noisy Don’t know yet 3 2 4 3 3 2 3 4 4 3 4 29 Male Penang TRUE A lot of chicken Southern (nearest to Gleneagles Hospital) Badrul Nothing in particular 1539426156
38 0 0 0 0 0 0 1 0 0 0 Within the last year Less than every month > 1 hour To take photographs Alone It’s very relaxing. None. Better wayfinding. 4 3 4 4 3 3 2 3 3 3 5 34 Male Jurong West. TRUE None. Southern (nearest to Gleneagles Hospital) Kana The participation was here for a specific purpose which was photography. Got the most reaction when asked about safety. His answer was, “Bro, this is Singapore”. 1539426583
39 0 0 1 0 0 0 0 0 0 0 Within the last month 1-3 times a month 30 minutes to an hour To relax, To be with my children Children Pleasant and convenient. None. Grand wish. Just clear all the surrounding roads to keep away the traffic noise. 5 3 4 3 1 2 4 4 3 3 5 39 Male Clementi TRUE Fantastic. Keep it the way it is. Southern (nearest to Gleneagles Hospital) Kana He was quite relaxed, most probably due to being around the kids. Had no issues participating as long as I was ready to walk with them. A very happy visitor of the garden and had a grand wish of clearing all the cars away from the surroundings. 1539427351
40 0 0 0 0 0 0 1 1 0 0 Within the last year Less than every month > 1 hour To listen to and observe nature, To get inspiration Partner Native flowers, organised activities, souvenirs and the new spaces (learning forest) Ongoing construction at learning forest. The mixed traffic of casual walkers, joggers and pets. Better wayfinding. 5 4 4 3 2 1 3 4 3 4 5 52 Male Ang Mo Kio TRUE Embed more sculptures related to cultural and historical significance. Introduce some murals as well. Southern (nearest to Gleneagles Hospital) Kana It was the participants birthday and he was there with his wife. I was reluctant to disturb them but they insisted. Ended up having a chat for more than 1 hour. Being a design lecturerwith fascination for nature, he wanted to share his ideas that can be incorporated into urban planning etc. A nice way to end the day :-) 1539434115
41 0 0 1 0 0 0 0 0 0 0 Less than a week ago Once a week > 1 hour To listen to and observe nature, To escape from the city, To relax Children, Partner Enjoying greenery No Food options 5 5 5 5 3 1 2 5 3 3 5 70 Male Ang Mo kio TRUE Satisfied Southern (nearest to Gleneagles Hospital) Fatin Old couple with relatives 1539477484
42 0 0 1 0 0 0 0 0 0 0 Within the last month 1-3 times a month 30 minutes to an hour To exercise Alone Very relaxing, good plants, interested in gardening Carpark charges More swans/ducks in the pond 5 5 5 5 5 3 3 3 3 4 5 70 Female Holland road TRUE No Southern (nearest to Gleneagles Hospital) Fatin She had to rush off in the middle of the survey - so I had to walk with her 1539477915
43 0 0 1 0 0 0 0 0 0 0 Within the last month 1-3 times a month 30 minutes to an hour To listen to and observe nature, To be with my children, To relax, To walk the dog Children, Partner Food and nature None More kids friendly zone 5 5 5 5 5 3 4 5 3 5 5 30 Female East Coast TRUE NA Southern (nearest to Gleneagles Hospital) Fatin Couple with a small kid 1539478787
44 0 0 0 0 0 0 1 0 0 0 Within the last year Less than every month 30 minutes to an hour To listen to and observe nature, To get inspiration Partner Many types of flowers NA More activities 4 4 4 5 3 2 3 3 3 3 4 35 Male Hougang TRUE NA Southern (nearest to Gleneagles Hospital) Alex NULL 1539485058
45 0 1 0 0 0 0 1 0 0 0 Longer than a year ago Less than every month 15 - 30 minutes To meditate, To relax Friends Relaxed atmosphere surrounded by greenery NA More varieties of plants 5 5 4 5 4 4 4 5 5 5 4 25 Male Redhill TRUE NA Southern (nearest to Gleneagles Hospital) Alex NULL 1539487295
46 0 0 1 0 0 0 0 0 0 0 Within the last year Less than every month 30 minutes to an hour To be with my children Children Fresh air, easy to walk NA More shady trees 5 4 5 4 5 5 4 3 2 3 5 35 Female Jurong TRUE Love that is children friendly and many types of trees to see Southern (nearest to Gleneagles Hospital) Alex NULL 1539488731
47 0 1 0 0 0 0 1 0 0 0 Longer than a year ago Less than every month 30 minutes to an hour To take photographs, To escape from the city Parents Very green, not high rise Sometimes noisy More shelters 4 4 4 4 3 3 3 3 3 4 4 40 Female Toa Payoh TRUE NA Southern (nearest to Gleneagles Hospital) Alex NULL 1539490671
48 0 0 0 0 0 0 1 0 0 0 Within the last month 1-3 times a month 30 minutes to an hour To escape from the city Alone Relaxed place NA More toilets 4 4 4 5 3 3 3 4 4 4 4 45 Female Sengkang TRUE NA Southern (nearest to Gleneagles Hospital) Alex NULL 1539490829
49 0 1 0 0 0 0 1 0 0 0 NA NA 30 minutes to an hour To take photographs Friends Many trees to see NA NA 4 3 3 5 4 5 4 5 4 4 5 30 Female Malaysia TRUE NA Southern (nearest to Gleneagles Hospital) Alex NULL 1539490982
50 0 0 0 0 1 0 0 0 0 0 Less than a week ago More than once a week > 1 hour , Work Alone Looks of visitors Nil Nil 3 3 3 3 3 3 3 3 3 3 3 30 Male Kaki Bukit TRUE Nil Northern (nearest to Botanic Gardens MRT) Wyton Foreign worker, likely from Bangladesh/India. Works on a contract basis. This period he is working in SBG and it’s his off day. Does not understand English well and seemed reluctant to have opinions on SBG. 1539500662
51 0 0 0 0 0 0 1 0 0 0 Within the last year Less than every month > 1 hour To take photographs Alone Landscape, nature Not much Don’t know 4 5 5 4 3 3 2 3 3 4 5 25 Male Kovan TRUE The birds - good opportunity for exposure for kids. Northern (nearest to Botanic Gardens MRT) Wyton Photographer, came to shoot stuff. But he comes very rarely and presumably just came; doesn’t have much to say with regards to improvement. 1539504088
52 0 0 0 0 0 0 0 0 1 0 NA NA > 1 hour , Recommended location in blog Partner Lots of variety of plants which cannot be seen in home country No food options. Especially cheap ones Nil 4 4 4 5 2 1 1 3 3 4 4 30 Male Poland TRUE The park is really big, it took us three hours just to explore the northern section. Northern (nearest to Botanic Gardens MRT) Wyton NULL 1539505177
53 0 0 0 0 0 0 1 0 0 0 Less than a week ago 1-3 times a month > 1 hour To relax Friends Natural Tre NA 1 5 5 5 5 5 5 5 5 5 5 27 Male India TRUE NA Northern (nearest to Botanic Gardens MRT) Deviana A bit unwilling to asnwer the open ended questions 1539515713
54 0 0 0 0 0 0 1 0 0 0 Within the last month 1-3 times a month 30 minutes to an hour To exercise Friends Nice garden Mosquito More food 4 4 5 4 3 3 3 3 3 3 3 30 Male Bukit Timah TRUE NA Northern (nearest to Botanic Gardens MRT) Deviana NULL 1539516441
55 0 0 0 0 0 0 1 0 0 0 Less than a week ago Once a week 30 minutes to an hour To relax Partner Garden, flower, nature NA NA 4 4 5 5 3 2 4 3 3 3 3 40 Female Newton TRUE None Northern (nearest to Botanic Gardens MRT) Deviana Answer in a rush 1539517212
56 0 0 1 0 0 0 0 0 0 0 Less than a week ago More than once a week 30 minutes to an hour To relax, To exercise Partner Very good. Not sufficient seating areas. More shelters. 5 5 5 5 2 2 4 2 2 3 5 70 Male Novena. TRUE None. Northern (nearest to Botanic Gardens MRT) Kana The uncle is a regular. 1539561398
57 0 0 1 0 0 0 0 0 0 0 Less than a week ago More than once a week 15 - 30 minutes To exercise Alone Morning fresh air and the crowd. What is there not to like? None. 5 5 5 5 3 3 3 4 3 3 5 82 Male Watten Estate. TRUE I’m a satisfied customer. Nothing to complaint. Northern (nearest to Botanic Gardens MRT) Kana The uncle was hesitant to speak on improvements. Either he wasn’t comfortable or just a happy customer. 1539562622
58 0 0 0 0 0 0 0 1 0 0 Less than a week ago More than once a week 30 minutes to an hour To exercise Alone Fantastic! Good route for morning jog. Dog shit. Hopefully no dogs. Add signs to tell dog owners to pick shit up 5 5 5 4 4 3 4 4 3 4 4 60 Female You Pandan/Farreer Market TRUE NA Northern (nearest to Botanic Gardens MRT) Wyton Had lots to say. The food used to be affordable but became more expensive after renovation. Perhaps this is after it became a world heritage site? It became more crowded after the SBG was upgraded to WHS. She really wishes people who exercise in groups would not shout and thinks that everyone should be quiet in parks. Talked about greening policy, and she agrees a lot with LKY on that. Architect. 1539562975
59 0 0 0 0 0 0 1 0 0 0 NA NA > 1 hour To listen to and observe nature, As a tourist. Alone It’s nice and commendable that they have a vast well managed garden right in the middle of the city. None. More shelters for rainy days. 4 4 4 4 2 2 3 4 3 3 5 40 Male Malaysia. TRUE To have a garden with so much of history is an asset for the future generation. Maybe discouraging people from driving to the place would great. Northern (nearest to Botanic Gardens MRT) Kana None. 1539563127
60 0 0 1 0 0 0 0 0 0 0 Less than a week ago More than once a week 30 minutes to an hour To exercise Alone Very green, near my home, hard to get a place like that in the centre of the city Employed too many staff (too much money spent on certain things like NPARKS people w T-shirt printed customer service w khaki pants), Too many construction, prefer it to be more natural, prefer not too many buildings As natural as possible, maintain it 4 4 4 4 3 2 2 4 5 4 5 60 Female Coronation road TRUE No Southern (nearest to Gleneagles Hospital) Jolene Frequent jogger! She gave feedback emphasising on better use of money and not hiring “useless staff” in the park 1539565483
61 0 0 1 0 0 0 0 0 0 0 Less than a week ago More than once a week > 1 hour To exercise Children, Friends It’s beautiful. A sanctuary in the city I would like more sheltered areas when it’s raining No 5 5 5 5 2 2 4 2 2 2 5 40 Female Holland V TRUE No, thank you Southern (nearest to Gleneagles Hospital) Jolene She declined the survey as She was on the way to workout session. Walked and talked with her 1539566087
62 0 0 1 0 0 0 0 0 0 0 Less than a week ago Once a week 30 minutes to an hour To escape from the city, To exercise Friends Beautiful nature and wonderful gardens to walk Nothing More water points 5 3 5 5 2 2 4 3 5 4 5 51 Female AMK TRUE Jacob ballad gardens should be open on Monday’s Southern (nearest to Gleneagles Hospital) Jolene Three ladies (not from Singapore) walking for an hour in the gardens. 1539566514
63 0 0 1 0 0 0 0 0 0 0 Less than a week ago Once a week 30 minutes to an hour To get inspiration, To meditate, To take photographs, To exercise, To relax, To listen to and observe nature Alone Flora and fauna, very natural setting, lots of history Nothing More dining options 4 5 5 5 2 2 1 4 3 3 4 63 Female Bukit Timah Road FALSE Very glad it’s a heritage site Southern (nearest to Gleneagles Hospital) Fatin NULL 1539644210
64 0 0 0 0 0 0 0 1 0 0 Less than a week ago Once a week > 1 hour To escape from the city, To exercise Alone Beautiful greenery Cats at night Nothing 5 5 5 5 3 3 3 4 3 4 4 34 Female Tanglin TRUE Beautiful trees and greenery Southern (nearest to Gleneagles Hospital) Fatin Nil 1539644718
65 0 0 0 0 0 0 0 1 0 0 Less than a week ago More than once a week 30 minutes to an hour To exercise, To listen to and observe nature Alone All the greenery Trying to plant too many trees- prefer green lawns Get rid of monitor lizards 5 5 5 5 3 3 2 5 5 5 5 68 Female Tanglin TRUE Nothing Southern (nearest to Gleneagles Hospital) Fatin Nil 1539645246
66 0 0 0 0 0 0 1 0 0 0 NA NA > 1 hour , Recommendations, too good to miss Partner Everything Nothing Land trains 5 5 5 5 5 3 1 3 3 2 5 70 Couple England TRUE Lovely gorgeous Southern (nearest to Gleneagles Hospital) Ka Kui Very friendly ppl from england, first attraction they visited since they landed 1539752250
67 0 0 1 0 0 0 0 0 0 0 Within the last year Less than every month > 1 hour To meet others , Family Beautiful place Hot weather Put AC 5 2 5 5 5 1 2 5 5 4 5 75 Male East coast TRUE Fresh air Southern (nearest to Gleneagles Hospital) Ka Kui Very enthusiastic and friendly 1539752622
68 0 0 0 0 0 0 0 0 1 0 NA NA > 1 hour To relax, To be with my children Children Garden trees more than hundred yr tree and fish None None 5 5 5 5 1 1 1 5 5 5 5 35 Female Tanglin TRUE None Southern (nearest to Gleneagles Hospital) Ka Kui NULL 1539754789
69 0 0 1 0 0 0 0 0 0 0 Longer than a year ago Less than every month 15 - 30 minutes To relax Partner Greenery serenity Not convenient without car Have transport to south side 5 1 2 5 1 1 1 5 5 3 5 50 Female Yck FALSE Beautiful and good exercise if convenient NA Ka Kui In a rush, came here cos near gleneagle. Got appt at gleneagle 1539755283
70 1 0 0 0 0 0 0 0 0 0 NA NA > 1 hour , Work Alone Cool, very nice No Everything is ok 4 5 5 5 3 3 3 5 5 2 5 55 Male Woodland TRUE Very good! Southern (nearest to Gleneagles Hospital) Ka Kui He came for research work 1539755289
71 0 0 0 0 0 0 0 1 0 0 NA NA > 1 hour To exercise, To relax Alone Everything No No 5 5 5 5 1 1 1 3 3 4 5 30 Female Sheraton tower TRUE No Northern (nearest to Botanic Gardens MRT) Deviana Nope 1539756078
72 0 1 0 0 0 0 1 0 0 0 NA NA > 1 hour To be with my children, To get inspiration, To relax, To listen to and observe nature Children Flowers and statues Nothing Free fun fair 5 4 4 5 4 5 2 5 4 4 5 40 Male Pasir Ris TRUE Nice food and peaceful and love the nature Southern (nearest to Gleneagles Hospital) Ka Kui Very friendly Father and Son. Son was very chatty 1539756276
73 0 1 0 0 0 0 0 0 0 0 Less than a week ago More than once a week > 1 hour , Work Alone Organised, in order Otter that eat fish Get rid of otters 5 5 5 5 1 1 1 5 5 5 5 65 Female East coast TRUE Tanglin gate quite isolated Southern (nearest to Gleneagles Hospital) Irwan NULL 1539756899
74 0 1 0 0 0 0 0 0 0 0 NA NA > 1 hour To relax, To take photographs, To listen to and observe nature Partner Orchid garden No No 5 5 5 5 5 5 1 5 5 5 5 55 Couple Yotel TRUE Will revisit Northern (nearest to Botanic Gardens MRT) Deviana No 1539758229
75 0 0 0 0 0 0 0 0 1 0 Within the last month Less than every month > 1 hour To relax, Spend time with family Parents Quietness and tranquility Less accessible for elderly More stop spots for relaxing 4 3 3 4 3 3 2 3 3 2 5 58 Male Queenstown FALSE Hate about the accessibility need public transport Southern (nearest to Gleneagles Hospital) Irwan No 1539758839
76 0 0 0 0 0 0 1 0 0 0 NA NA > 1 hour To relax, Photograph Children, Partner Greeneries, scenery, large green field The maps not user friendly, not enough staff to help Add more staff to help the tourist 4 2 4 4 3 3 2 2 1 3 5 25 Female Indonesia TRUE Advice for tourists, if you want to come, better come from the southern area, as it is nearer to the attractions, we come from the MRT and have to walk far. The garden itself is very pretty Northern (nearest to Botanic Gardens MRT) Deviana Couple with one toddler, they are friendly and helpful to give feedback about the garden,m. 1539759126
77 0 1 0 0 0 0 0 0 0 0 Longer than a year ago Less than every month > 1 hour To relax, To escape from the city, To see orchids Parents Many kinds of Orchids Nothing More drinks such as fruit juices 5 5 5 4 3 3 2 5 4 3 5 33 Female Ho Chih Minh FALSE I love everything Southern (nearest to Gleneagles Hospital) Irwan A tourist from Ho Chih Minh 1539759911
78 0 0 0 0 0 0 1 0 0 0 NA NA 30 minutes to an hour To relax, To take photographs Alone It’s a butifull place and very relaxing Nothing NA 5 4 5 5 3 4 4 5 4 2 5 34 Male France TRUE I love place with lake Northern (nearest to Botanic Gardens MRT) Jonathan NULL 1539853324
79 0 0 0 0 0 0 0 1 0 0 Within the last year Less than every month 30 minutes to an hour To exercise Friends The scenary The construction More colourful plants 4 1 5 3 3 2 1 4 4 3 2 18 Female Tan kah kee TRUE No Northern (nearest to Botanic Gardens MRT) Jonathan NULL 1539853731
80 0 0 0 0 0 0 1 0 0 0 Less than a week ago More than once a week 30 minutes to an hour , For work Alone Beautiful and unique, love nature Weather, hot More sheltered areas 4 4 5 4 3 4 3 5 3 3 5 28 Female Jurong TRUE Nature beauty, love seeing nature everyday! Southern (nearest to Gleneagles Hospital) Adreena She is working at SBG as a Park Manager. 1539854074
81 0 0 0 0 0 0 1 0 0 0 Less than a week ago More than once a week > 1 hour , School Alone Sunshine Heat Remove law school 4 4 4 4 5 5 2 2 4 2 4 20 Female Clement TRUE I hate law school love the park Northern (nearest to Botanic Gardens MRT) Jonathan Commented that results will be skewed due to the NUS Law school being close to the garden 1539854291
82 0 0 1 0 0 0 0 0 0 0 Within the last month More than once a week 30 minutes to an hour To relax, To exercise, To escape from the city Alone No pollution, no cars Too many renovations More water fountains, no picnic tables 5 5 5 5 3 3 2 4 2 2 5 54 Female Bukit Timah FALSE More parking on weekends Southern (nearest to Gleneagles Hospital) Adreena She provides uncommon answers across the surveys that I’ve conducted 1539854573
83 0 0 0 0 0 0 1 0 0 0 Within the last month 1-3 times a month > 1 hour To be with my children Children Spacious Beautiful More Water points 5 5 5 5 4 3 2 3 3 4 4 35 Female West TRUE No Northern (nearest to Botanic Gardens MRT) Jonathan NULL 1539854702
84 0 0 0 0 0 0 0 0 1 0 NA NA > 1 hour To relax Alone The temperature and the quiet Nothing Nothing 5 5 5 5 3 3 1 5 5 3 5 33 Female London, UK TRUE It’s very peaceful! Southern (nearest to Gleneagles Hospital) Adreena She’s from the UK and she seems to love the outdoor weather in Singapore! 1539855428
85 0 0 1 0 0 0 0 0 0 0 Less than a week ago More than once a week 30 minutes to an hour To exercise Alone Lovely greenery and making friends Littering Northern side - less attractive, so the botanics mrt area should be more attractive 5 4 5 5 3 3 3 4 4 3 5 71 Male Bukit Timah TRUE It’s a loveable place and I’ve made alot of friends! Southern (nearest to Gleneagles Hospital) Adreena He is really sociable and asked me on what project I’m doing 1539856083
86 0 1 0 0 0 0 1 0 0 0 Longer than a year ago More than once a week > 1 hour To take photographs, To meet others Alone Heritage trees Not enough signs Add more signboards and affordable restaurant 4 3 3 3 2 1 3 3 3 3 3 41 Male Woodlands TRUE Add trams more foods more signs Southern (nearest to Gleneagles Hospital) Adreena - 1539856706
87 1 0 0 0 0 0 0 0 0 0 Less than a week ago Once a week 15 - 30 minutes To exercise, To listen to and observe nature, To be with my children, To escape from the city, To relax, To take photographs Children All the garden, it’s perfect NA Comfortable seats 5 4 5 5 5 4 4 5 5 5 5 36 Female Jervois road TRUE NA Southern (nearest to Gleneagles Hospital) Kendrick Mother with children. 1539856928
88 0 0 1 0 0 0 0 1 0 0 Less than a week ago 1-3 times a month 15 - 30 minutes To exercise Friends Green space, conveniently located near my office Nothing Food and drink kiosks 5 5 5 5 4 3 3 5 5 3 5 35 Female Punggol FALSE No Southern (nearest to Gleneagles Hospital) Kendrick - 1539859215
89 0 0 0 0 0 0 0 1 0 0 Less than a week ago Once a week > 1 hour To take photographs, To relax, To listen to and observe nature Alone Quiet at this time of the day, green Nil More eco spaces like the eco lake 4 5 5 5 3 3 3 2 4 3 5 38 Female Bukit timah TRUE Nothing much Northern (nearest to Botanic Gardens MRT) Norio Foreign lady who has been living here for around one month 1539859419
90 0 0 0 0 0 0 0 0 0 1 Less than a week ago Once a week 30 minutes to an hour To exercise, To attend events (e.g. movies in the park, symphony performances, and tours) Friends Peaceful environment and conducive for running Nil More intuitive wayfinding 4 4 5 5 3 2 3 4 3 4 5 29 Male North East FALSE Nil Southern (nearest to Gleneagles Hospital) Kendrick Nil 1539859581
91 0 0 0 0 0 0 1 0 0 0 NA NA > 1 hour To escape from the city, To take photographs, To spend time with my loved ones Friends Peaceful Nil Nil 5 5 5 4 3 3 1 5 5 5 5 16 Female Jurong West TRUE The atmosphere Northern (nearest to Botanic Gardens MRT) Norio Picnicking with her friend at the lawn near the eco lake 1539859945
92 0 0 1 0 0 0 0 0 0 0 Within the last year Less than every month < 15 minutes To exercise, Wedding shots Friends Trimmed plants and grass Too hot Aircon 4 3 4 3 2 2 3 4 1 1 5 31 Male Woodlands TRUE Bored Northern (nearest to Botanic Gardens MRT) Kendrick NULL 1539860085
93 0 0 0 0 0 0 0 1 0 0 Less than a week ago More than once a week 30 minutes to an hour To listen to and observe nature, To escape from the city, To relax Alone Everything is very good Too dark at night More lighting in the gaedens 5 3 5 5 4 3 1 4 3 3 4 31 Female Bukit timah TRUE Nil Northern (nearest to Botanic Gardens MRT) Norio Chinese masters student at the Lee kuan yew school of public policy 1539860577
94 0 0 0 0 0 0 0 1 0 0 Less than a week ago Less than every month 15 - 30 minutes To exercise Friends Greenery Insect More shelter 3 3 3 3 3 1 2 1 1 1 4 30 Male Tanglin FALSE Na Southern (nearest to Gleneagles Hospital) Kendrick NA 1539860597
95 0 0 0 0 0 0 0 1 0 0 Less than a week ago More than once a week < 15 minutes , To just pass through the botanics NA Very nice like a garden and swans and plants and people Too crowded on the weekends, too hot More benches for tourist, air conditioning 4 3 5 5 1 3 4 3 2 4 5 25 Female Bukit Timah TRUE Nothing it’s okay Northern (nearest to Botanic Gardens MRT) Aishah Got a lot of mosquito in the garden in the evening 1539861125
96 0 0 0 0 0 0 1 0 0 0 Less than a week ago More than once a week < 15 minutes To escape from the city, To listen to and observe nature, To get inspiration, Walk to school Friends Nice and green. Beautiful and cool not very hot better than road Floods when rain deep puddles and not enough lights More drains 3 3 5 3 2 3 3 4 2 4 5 25 Male Queenstown and cck FALSE Nil Northern (nearest to Botanic Gardens MRT) Aishah Law students coming out from law and walking to MRT 1539861521
97 0 0 1 0 0 0 0 0 0 0 NA NA > 1 hour To relax, To exercise , Family Peaceful and we’ll kept, very refreshing from the city Mosquitoes at dusk More fogging 5 5 5 5 3 2 1 4 5 3 5 53 Male Bukit batok TRUE JuJu should put less ice in their juices Northern (nearest to Botanic Gardens MRT) Norio Indian foreigner visiting his sister 1539861703
98 0 0 0 0 0 0 0 1 0 0 Less than a week ago More than once a week > 1 hour To exercise, To walk the dog, Play pokemon Alone Nice to walk here, everything is well kept and we’ll lit even at night Nothing Better reception for some parts of the garden 5 5 5 5 4 3 1 5 3 4 5 45 Female Orchard TRUE Great place to play Pokémon! Southern (nearest to Gleneagles Hospital) SK Lady who lives near here comes everyday to walk her dog. Apparently many people come here to play pokemon 1539862227
99 0 0 0 0 0 0 0 1 0 0 Less than a week ago More than once a week > 1 hour To get inspiration, To meet others, To escape from the city, To relax, To exercise Children Good place. Fresh air. See trees. Have fun! Baby likes it here Mosquito at night Nil 5 5 5 5 5 3 4 5 5 5 5 40 Female Bukit Timah TRUE Nice place Northern (nearest to Botanic Gardens MRT) Aishah My interviewee is a helper who brings her employees toddler to the gardens from morning till evening. They pack food for lunch and dinner and enjoy the garden 1539862411
100 0 0 0 0 0 0 0 1 0 0 Less than a week ago More than once a week > 1 hour To exercise Alone Nature sounds, away from traffic. Nothing Nothing 5 5 5 5 5 3 2 5 5 5 5 35 Female Tanglin TRUE I love the new learning forest and how theres a lot of different age groups who come here Southern (nearest to Gleneagles Hospital) SK Caucasian who lives here and usually comes with her toddler but is alone here today. 1539862647
101 0 0 0 0 0 0 1 0 0 0 Within the last year Less than every month > 1 hour , To walk through the garden to get to the other side Friends Clean, vibrant, refreshing Dark at night More lighting 4 4 4 3 1 2 2 3 4 2 4 20 Male Hougang TRUE It’s a nice garden just need more lighting at night Northern (nearest to Botanic Gardens MRT) Aishah Boys are going to watch a. Basketball game but decided to walk around the gardens before the game 1539862981
102 0 1 0 0 0 0 0 1 0 0 NA NA > 1 hour To escape from the city, To relax Partner Nature, quiet peaceful Nothing Nothinf 5 4 5 5 3 3 2 5 5 4 5 50 Male USA TRUE Great experience! Southern (nearest to Gleneagles Hospital) SK American tourist first time here with his partner 1539863107
103 0 0 0 0 0 0 1 0 0 0 Less than a week ago More than once a week < 15 minutes To escape from the city, To attend events (e.g. movies in the park, symphony performances, and tours), To meditate, To get to the school Alone Quiet and peaceful usually at night. Sometimes when it rains I get wet but it that’s nature Have more food outlets 5 2 5 5 1 2 4 3 4 4 5 20 Male Kent ridge FALSE The garden is nice at night because it’s quiet and peaceful Northern (nearest to Botanic Gardens MRT) Aishah Interviewee is a law student. Feels that the garden events are too far from his school so he won’t go for them. 1539863524
104 0 0 0 0 0 0 0 1 0 0 Less than a week ago Once a week 15 - 30 minutes To exercise Friends Peaceful, lesser crowd at night Can be too dark at some places More lights at nighr 3 4 4 4 3 2 3 4 3 3 4 30 Female Bedok TRUE Nil Southern (nearest to Gleneagles Hospital) SK Pair of female colleagues who come here daily to run 1539863540
105 0 1 0 0 0 0 1 0 0 0 Longer than a year ago Less than every month 30 minutes to an hour To meditate, To listen to and observe nature, To take photographs, To attend events (e.g. movies in the park, symphony performances, and tours) Partner Nature; greenery Inaccessible Have more restaurants or events 4 3 3 4 3 4 3 5 4 3 4 23 Female Bukit Merah TRUE Nil Southern (nearest to Gleneagles Hospital) Kendrick Nil 1539863887
106 0 0 0 0 0 0 0 1 0 0 Less than a week ago More than once a week > 1 hour To escape from the city, To listen to and observe nature, To exercise Alone The atmosphere and the feeling to exercise among nature. Feels happy here : A bit dark at night More light s 4 4 4 5 1 2 3 3 3 3 4 55 Male Bukit Timah TRUE More lights Northern (nearest to Botanic Gardens MRT) Aishah Jogger who finished jogging his rounds 1539864035
107 0 0 1 0 0 0 0 0 0 0 Less than a week ago More than once a week 30 minutes to an hour To walk the dog Alone It’s a uneaco site convenient sufficient heirtage Inability to let dog run free without leash Not have surveys in the gardens 5 5 5 5 1 3 3 5 3 4 5 40 Male Holland road TRUE Beautiful place but still quite small compared to central park in new york or Ren min garden in Shanghai or Hyde Park in London. There is far less interaction between animals and people in this park Southern (nearest to Gleneagles Hospital) SK Local man walking his dog in the garden. Initially reluctant to do survey but opened up by the end to show me some photos of other parks in other countries. 1539864269
108 0 0 0 0 0 0 0 1 0 0 Less than a week ago Once a week 30 minutes to an hour To relax, To exercise, To attend events (e.g. movies in the park, symphony performances, and tours), To escape from the city Alone Spacious and well maintain and safe at night Constructions at the moment which lasted a year already Nothing 5 5 5 5 2 2 3 3 3 4 5 40 Male Bukit Timah FALSE Nil Northern (nearest to Botanic Gardens MRT) Aishah Man was concerned about my safety coz it was dark. But felt that the Park was generally safe overall 1539865281
109 0 0 1 0 0 0 0 0 0 0 Within the last year Less than every month > 1 hour To relax, To spend time with family Parents, Relatives Ample green spaces, variety of flora and fauna Accessibility to main area, way-finding Easier way-finding 3 2 2 5 3 2 3 4 4 4 5 29 Female Toa Payoh TRUE NA Southern (nearest to Gleneagles Hospital) Kendrick NULL 1539874545
110 0 0 0 0 0 0 1 0 0 0 Within the last year Less than every month 30 minutes to an hour To escape from the city, To relax, To listen to and observe nature Alone Wide variety of plants. Saw some otters running across the park! Really hot Separate paths for humans and buggy vehicles 5 4 5 5 3 3 3 3 3 3 5 30 Male Woodlands FALSE Nil Northern (nearest to Botanic Gardens MRT) Aizat None 1539919007
111 0 0 0 0 0 0 1 0 0 0 NA NA > 1 hour To listen to and observe nature, To take photographs, To relax, I am a tourist. Singapore botanic gardens is one of our locations to visit in Singapore Children, Partner A lot of greenery. Easy to get around. Free Nothing so far Can’t think of anything so far 4 4 4 4 2 2 2 4 4 2 4 35 Male India FALSE MRT is only accesible at one side. If I come from there and walk to the other side of the park, I have to walk back all the way to take the MRT again. It is quite troublesome Northern (nearest to Botanic Gardens MRT) Aizat Indian couple with small kid 1539920045
112 0 0 0 1 0 0 0 0 0 0 Within the last year Less than every month 30 minutes to an hour To relax, To meet others, Lunch with my girlfriend Partner Quiet open space with lots of nice plants Little seating places which have shelter More sheltered seating areas 4 4 4 4 2 2 2 2 2 2 4 20 Male Bukit Panjang FALSE None Northern (nearest to Botanic Gardens MRT) Aizat Couple brought McDonalds to eat in garden 1539921648
113 0 0 0 0 0 0 1 0 0 0 NA NA > 1 hour To relax, To listen to and observe nature Partner The peacefulness and the nature Lack of eating place Need to have more food stalls and tables for eating 4 4 5 4 2 2 2 4 3 3 4 18 Male Hougang area FALSE No. Neutral Southern (nearest to Gleneagles Hospital) Irwan No 1540017875
114 0 0 0 0 0 0 1 0 0 0 NA NA > 1 hour , To learn (student on anthropology) Friends, Students The nature and culture Nothing Nothing 3 5 5 3 3 2 3 4 3 3 5 22 Female Thailand TRUE Nothing Southern (nearest to Gleneagles Hospital) Irwan Student from Prince of Songkhla University , Thailand 1540018874
115 0 1 0 0 0 0 0 0 0 0 NA NA > 1 hour To take photographs Friends Scenery Nothing Should allow people to skate 5 4 5 5 3 3 2 5 5 4 5 24 Male Malaysia, Sabah FALSE Nothing yet (just arrived) Southern (nearest to Gleneagles Hospital) Irwan None 1540020112
116 0 0 1 0 0 0 0 0 0 0 Within the last year Less than every month 30 minutes to an hour To walk the dog Friends, Partner Big open space Heat More shaded areas 4 4 4 4 3 2 4 3 2 3 5 24 Female Serangoon TRUE NA Northern (nearest to Botanic Gardens MRT) Jonathan NULL 1540027895
117 0 0 0 0 0 0 0 1 0 0 Less than a week ago More than once a week > 1 hour To exercise Partner Everyhevemts plants smells wildlife No more pavement Build less 5 4 5 5 4 3 3 5 5 5 5 50 Female Orchard FALSE One of my favourite parks in the world Northern (nearest to Botanic Gardens MRT) Jonathan Too much pavement, but best planned city in the world 1540028478
118 0 0 1 0 0 0 1 0 0 0 Within the last month Less than every month 30 minutes to an hour To exercise, To listen to and observe nature, To walk the dog, To escape from the city Alone The greenery The heat Nothing, it’s perfect 4 4 5 5 4 3 3 5 5 3 5 30 Male East coast TRUE The whole garden Northern (nearest to Botanic Gardens MRT) Jonathan NULL 1540028932
119 0 0 1 0 0 0 0 0 0 0 Longer than a year ago Less than every month 30 minutes to an hour To relax, To listen to and observe nature, To escape from the city Partner Its serene and tranquil nature Nil Better directional signs 4 3 4 4 4 3 2 4 3 4 4 28 Male Bishan TRUE Nil Southern (nearest to Gleneagles Hospital) Norio With his girlfriend 1540035412
120 0 0 1 0 0 0 0 0 0 0 Within the last year Less than every month > 1 hour To escape from the city, To be with my children Children A lot of open spaces for my kids to run around Nil More children friendly facilities 4 4 5 5 4 4 3 3 3 3 5 38 Female Serangoon TRUE Nil Southern (nearest to Gleneagles Hospital) Norio Mother of 2 1540035988
121 0 0 0 0 0 0 1 0 0 0 Within the last year Less than every month > 1 hour , To eat Friends Quiet and peaceful, has some historical features A little too dark at night Better lighting 4 4 5 3 4 4 2 4 4 4 4 32 Female Toa Payoh TRUE Nil Southern (nearest to Gleneagles Hospital) Norio Going for dinner with her friends 1540037515
122 0 0 1 0 0 0 0 0 0 0 Longer than a year ago Less than every month > 1 hour To attend events (e.g. movies in the park, symphony performances, and tours), To relax Friends Great place to chill None Brighter lights at night 4 4 4 4 3 3 4 4 3 4 4 35 Male Jurong east FALSE Nope Northern (nearest to Botanic Gardens MRT) Aizat Nil 1540041419
123 0 0 1 0 0 0 0 0 0 0 Within the last year Less than every month 30 minutes to an hour To relax, To walk the dog, To meet others Partner Quiet. Escape from the city Nothing More covered seating areas 5 5 5 5 3 3 4 2 2 4 5 25 Female Clementi FALSE No Northern (nearest to Botanic Gardens MRT) Aizat Nil 1540042142
124 0 0 1 0 0 0 0 0 0 0 Within the last month 1-3 times a month > 1 hour To be with my children, To attend events (e.g. movies in the park, symphony performances, and tours), To listen to and observe nature, To relax Partner, Children Good place to relax and bond with family Gets very dark at night, lack of bright lights The lights could be brighter also for safety reasons 5 5 5 5 3 2 4 3 3 5 4 40 Male Bukit timah FALSE Great place to view the moon in the night sky Northern (nearest to Botanic Gardens MRT) Aizat Nil 1540042799
125 0 0 0 0 0 0 1 0 0 0 NA NA > 1 hour To relax, To take photographs Partner environment too hot n.a. 4 4 4 4 2 1 5 2 2 2 4 40 Female USA TRUE n.a. Northern (nearest to Botanic Gardens MRT) tommy tourist 1540099144
126 0 0 0 0 0 0 0 1 0 0 Longer than a year ago Less than every month 30 minutes to an hour , for nostalgia (FT used to work in sg, today here as tourist) Alone everything nothing n.a. 5 5 5 5 4 4 4 4 3 4 4 35 Male India TRUE n.a. Northern (nearest to Botanic Gardens MRT) tommy former FT 1540100101
127 0 0 1 0 0 0 0 0 0 0 Within the last month Once a week > 1 hour To meditate, To meet others , meditation group tranquilty construction noise n.a. 3 3 5 4 1 1 4 2 2 3 4 35 Female bukit timah TRUE n.a. Northern (nearest to Botanic Gardens MRT) tommy NULL 1540100774
128 0 0 0 0 0 0 1 0 0 0 Less than a week ago More than once a week < 15 minutes , route to get to office Alone Nothing at all n.a. internal transport like sentosa 1 1 1 1 1 1 5 1 1 1 1 30 Male Queenstown FALSE too many kids Northern (nearest to Botanic Gardens MRT) tommy friday 1540104637
129 0 0 0 0 0 0 0 1 0 0 Less than a week ago More than once a week 30 minutes to an hour , lunch , colleagues quiet too hot aircon canteen 2 4 1 4 1 1 5 3 2 2 3 40 Male jurong TRUE hard to come without car Northern (nearest to Botanic Gardens MRT) tommy friday 1540104851
130 0 0 1 0 0 0 0 0 0 0 Longer than a year ago Less than every month > 1 hour To attend events (e.g. movies in the park, symphony performances, and tours) Alone na na na 3 4 1 2 1 1 4 3 3 3 3 50 Male bishan TRUE na Northern (nearest to Botanic Gardens MRT) tommy friday 1540105067
131 0 0 1 0 0 0 0 0 0 0 Longer than a year ago Less than every month 30 minutes to an hour To exercise Partner Scenic, relaxing, catch pokemon Mosquitoes more water features 4 4 5 4 3 3 3 4 4 3 5 30 Female Bishan TRUE Nope! Southern (nearest to Gleneagles Hospital) Kendrick NULL 1540112953
132 0 0 1 0 0 0 0 0 0 0 Within the last year Less than every month 30 minutes to an hour To escape from the city, To exercise, To listen to and observe nature Partner Large area to walk around Would be good if there are more shelters and rest stops More shelters and rest stops and some vending machines 4 4 4 4 3 3 2 3 3 2 5 30 Male Singapore TRUE NA Northern (nearest to Botanic Gardens MRT) Kendrick No 1540112959
133 0 0 1 0 0 0 0 0 0 0 Less than a week ago Once a week 15 - 30 minutes To exercise, To attend events (e.g. movies in the park, symphony performances, and tours) Children, Friends Free, green, lots of open spaces Not enough shelter More shelters 4 4 5 4 4 3 3 3 3 4 4 35 Female Seletar TRUE NA Southern (nearest to Gleneagles Hospital) Kendrick NULL 1540117286

3.3 Is there any relation between frequency_visit and last_visit?

As expected, the highest counts are people who visit the garden more than once a week and last visited the garden less than a week ago.

data %>% 
  filter(last_visit != "This is my first time") %>% 
  ggplot(aes(frequency_visit, last_visit)) +
  geom_bin2d()+
  theme_fivethirtyeight() + 
  labs(title="Relation between frequency_visit and last_visit", y="",x="") +
  theme(plot.title = element_text(size=14, hjust=0.5))+ 
  theme(axis.text.x = element_text(angle = 20, hjust = 1))

3.4 Counts of transport modes taken to the garden

We can plot a frequency bar chart to find out how many people got to the gardens by each transport mode.

data %>% 
  separate_rows(transport_mode,sep=", ") %>% 
  ggplot(aes(transport_mode))+
  geom_bar()+
  theme_fivethirtyeight() + 
  labs(title="How did you get here today?", y="",x="") +
  theme(plot.title = element_text(size=14, hjust=0.5))+
  theme(axis.text.x = element_text(angle = 20, hjust = 1))

3.5 What is the age distribution of the respondents?

data %>% 
  ggplot(aes(x=age)) + geom_histogram(binwidth=10)+
  theme_fivethirtyeight() + 
  theme(plot.title = element_text(size=14, hjust=0.5))+
  theme(legend.position="none")+
  labs(title="Age distribution of respondents") +
  theme(axis.title = element_text()) + ylab("Frequency")+xlab("Age")

3.6 Are there any differences between how different age groups reach SBG?

To create a facet plot of the travel modes per age group! But the ages have to be grouped into bins first if not we would get a plot per age.

With the age groups formed, we expect 14 plots.

setDT(data)
data[age <1, agegroup := "0-1"]
data[age >0 & age <5, agegroup := "1-4"]
data[age >4 & age <10, agegroup := "5-9"]
data[age >9 & age <15, agegroup := "10-14"]
data[age >14 & age <20, agegroup := "15-19"]
data[age >19 & age <25, agegroup := "20-24"]
data[age >24 & age <30, agegroup := "25-29"]
data[age >29 & age <35, agegroup := "30-34"]
data[age >34 & age <40, agegroup := "35-39"]
data[age >39 & age <45, agegroup := "40-44"]
data[age >44 & age <50, agegroup := "45-49"]
data[age >49 & age <55, agegroup := "50-54"]
data[age >54 & age <60, agegroup := "55-59"]
data[age >59 & age <65, agegroup := "60-64"]
data[age >64 & age <70, agegroup := "65-69"]
data[age >69 & age <75, agegroup := "70-74"]
data[age >74 & age <80, agegroup := "75-79"]
data[age >79 & age <85, agegroup := "80-84"]
data[age >84, agegroup := "85+"]
data %>% 
  separate_rows(transport_mode,sep=", ") %>% 
  filter(transport_mode!="NA") %>% 
  filter(!is.na(transport_mode)) %>% 
  filter(transport_mode!="") %>% 
  ggplot(aes(transport_mode))+
  geom_bar(aes(x = transport_mode, fill=agegroup))+
  theme_fivethirtyeight() + 
  labs(title="Count of transport modes by age groups", y="",x="") +
  theme(plot.title = element_text(size=14, hjust=0.5)) +
  theme(axis.text.y = element_text(hjust=0)) +
  theme(axis.text.x = element_text(angle = 20, hjust = 1))+
  ylab("frequency")+xlab("transport mode")

3.7 How do different age groups rate the gardens’ accessibility?

data %>% 
  group_by(agegroup) %>%
  summarise(
    count = n(),
    mean = mean(satisfaction_access, na.rm = TRUE),
    sd = sd(satisfaction_access, na.rm = TRUE),
    median = median(satisfaction_access, na.rm = TRUE),
    IQR = IQR(satisfaction_access, na.rm = TRUE)
  )
## # A tibble: 14 x 6
##    agegroup count  mean      sd median   IQR
##    <chr>    <int> <dbl>   <dbl>  <dbl> <dbl>
##  1 15-19        3  5      0        5    0   
##  2 20-24       11  4.18   0.751    4    1   
##  3 25-29       16  4.44   0.814    5    1   
##  4 30-34       25  4.24   0.970    4    1   
##  5 35-39       20  4.65   0.489    5    1   
##  6 40-44       13  4.15   1.14     4    1   
##  7 45-49        4  4.25   0.957    4.5  1.25
##  8 50-54       12  4.08   1.31     4.5  1   
##  9 55-59        6  4.5    0.837    5    0.75
## 10 60-64        8  4.75   0.463    5    0.25
## 11 65-69        6  4.83   0.408    5    0   
## 12 70-74        7  4.86   0.378    5    0   
## 13 75-79        1  5    NaN        5    0   
## 14 80-84        1  5    NaN        5    0

3.8 Are people who visit the gardens more often, more satisfied with it?

Most attributes except for “crowdedness” and “seating” showed a general increase in satisfaction, as we compare the mean of the likert rating for the two extremes of visit frequencies – “less that every month” and “more than once a week”. Only “layout” had an steadily increasing mean as the visit frequency increases. Most attributes such as “food variety”, “food affordability”, “crowdedness”, “seating”, “wayfinding”, “flora and fauna” had the highest mean of likert rating at “1-3 times a week”.

Step 1. For each frequency of visit, what is the mean, sd and median of the likert ratings for each attribute?

likert_visitfreq <- data %>% 
  group_by(frequency_visit) %>% 
  summarise_at(c("satisfaction_layout", "satisfaction_wayfinding", "satisfaction_access","satisfaction_florafauna","satisfaction_food_variety","satisfaction_food_affordability","satisfaction_crowdedness","satisfaction_seating","satisfaction_shelter","satisfaction_activities","satisfaction_safety"), funs(mean, sd,median), na.rm = TRUE)

knitr::kable(likert_visitfreq)
frequency_visit satisfaction_layout_mean satisfaction_wayfinding_mean satisfaction_access_mean satisfaction_florafauna_mean satisfaction_food_variety_mean satisfaction_food_affordability_mean satisfaction_crowdedness_mean satisfaction_seating_mean satisfaction_shelter_mean satisfaction_activities_mean satisfaction_safety_mean satisfaction_layout_sd satisfaction_wayfinding_sd satisfaction_access_sd satisfaction_florafauna_sd satisfaction_food_variety_sd satisfaction_food_affordability_sd satisfaction_crowdedness_sd satisfaction_seating_sd satisfaction_shelter_sd satisfaction_activities_sd satisfaction_safety_sd satisfaction_layout_median satisfaction_wayfinding_median satisfaction_access_median satisfaction_florafauna_median satisfaction_food_variety_median satisfaction_food_affordability_median satisfaction_crowdedness_median satisfaction_seating_median satisfaction_shelter_median satisfaction_activities_median satisfaction_safety_median
Less than every month 4.268293 3.682927 4.170732 4.219512 2.902439 2.634146 2.804878 3.585366 3.292683 3.219512 4.536585 0.6334189 0.9858759 0.9461088 0.7909550 1.019923 0.9938837 0.9278877 0.9212928 1.0060791 0.9620861 0.6744465 4.0 4.0 4 4 3 3 3 4.0 3 3.0 5
1-3 times a month 4.285714 4.428571 4.428571 4.642857 3.500000 3.071429 3.357143 3.857143 3.357143 3.571429 4.500000 1.0690450 0.6462062 0.7559289 0.6333237 1.091928 0.7300459 0.8418974 0.7703289 0.8418974 1.0163499 0.6504436 4.5 4.5 5 5 3 3 3 4.0 3 3.5 5
Once a week 4.368421 4.263158 4.684210 4.631579 3.052632 2.578947 2.947368 3.578947 3.368421 3.842105 4.473684 0.6839856 0.7334928 0.4775669 0.4955946 1.129094 1.0173926 0.7798635 0.9612370 0.8306976 0.6882472 0.6117753 4.0 4.0 5 5 3 2 3 3.0 3 4.0 5
More than once a week 4.416667 4.138889 4.472222 4.472222 2.722222 2.555556 3.111111 3.555556 3.277778 3.500000 4.444444 0.9673233 1.0461570 1.0277885 0.9098229 1.322576 0.9394358 1.0358648 1.1574466 1.1615534 1.0000000 0.9085135 5.0 4.5 5 5 3 3 3 3.5 3 3.5 5
NA 4.478261 4.260870 4.608696 4.565217 2.913044 2.739130 2.304348 4.130435 3.826087 3.347826 4.739130 0.6653478 0.9153932 0.5830274 0.6623709 1.040675 1.2510865 1.2945614 0.9678631 1.1140497 0.9820524 0.4489778 5.0 4.0 5 5 3 3 2 4.0 4 3.0 5

Step 2. To transform the datatable from wide to long:

likert_visitfreq <- melt(setDT(likert_visitfreq), 
     measure = patterns("mean", "sd","median"),
     variable.name = 'var', value.name = c('avg', 'sd','median'))

likert_visitfreq<-likert_visitfreq %>% 
  mutate(var=recode_factor(likert_visitfreq$var, `1` = "layout", `2` = "wayfinding", `3` = "access",`4`="flora&fauna",`5`="food_variety",`6`="food_affordability",`7`="crowdedness",`8`="seating",`9`="shelter",`10`="activities",`11`="safety")) %>% 
  filter(likert_visitfreq$frequency_visit!="NA")

freq_visit_levels <- c("Less than every month","1-3 times a month","Once a week","More than once a week")
likert_visitfreq <- likert_visitfreq %>% 
  mutate(frequency_visit=parse_factor(frequency_visit,levels=freq_visit_levels,ordered=T))

likert_visitfreq
##          frequency_visit                var      avg        sd median
## 1  Less than every month             layout 4.268293 0.6334189    4.0
## 2      1-3 times a month             layout 4.285714 1.0690450    4.5
## 3            Once a week             layout 4.368421 0.6839856    4.0
## 4  More than once a week             layout 4.416667 0.9673233    5.0
## 5  Less than every month         wayfinding 3.682927 0.9858759    4.0
## 6      1-3 times a month         wayfinding 4.428571 0.6462062    4.5
## 7            Once a week         wayfinding 4.263158 0.7334928    4.0
## 8  More than once a week         wayfinding 4.138889 1.0461570    4.5
## 9  Less than every month             access 4.170732 0.9461088    4.0
## 10     1-3 times a month             access 4.428571 0.7559289    5.0
## 11           Once a week             access 4.684211 0.4775669    5.0
## 12 More than once a week             access 4.472222 1.0277885    5.0
## 13 Less than every month        flora&fauna 4.219512 0.7909550    4.0
## 14     1-3 times a month        flora&fauna 4.642857 0.6333237    5.0
## 15           Once a week        flora&fauna 4.631579 0.4955946    5.0
## 16 More than once a week        flora&fauna 4.472222 0.9098229    5.0
## 17 Less than every month       food_variety 2.902439 1.0199235    3.0
## 18     1-3 times a month       food_variety 3.500000 1.0919284    3.0
## 19           Once a week       food_variety 3.052632 1.1290942    3.0
## 20 More than once a week       food_variety 2.722222 1.3225756    3.0
## 21 Less than every month food_affordability 2.634146 0.9938837    3.0
## 22     1-3 times a month food_affordability 3.071429 0.7300459    3.0
## 23           Once a week food_affordability 2.578947 1.0173926    2.0
## 24 More than once a week food_affordability 2.555556 0.9394358    3.0
## 25 Less than every month        crowdedness 2.804878 0.9278877    3.0
## 26     1-3 times a month        crowdedness 3.357143 0.8418974    3.0
## 27           Once a week        crowdedness 2.947368 0.7798635    3.0
## 28 More than once a week        crowdedness 3.111111 1.0358648    3.0
## 29 Less than every month            seating 3.585366 0.9212928    4.0
## 30     1-3 times a month            seating 3.857143 0.7703289    4.0
## 31           Once a week            seating 3.578947 0.9612370    3.0
## 32 More than once a week            seating 3.555556 1.1574466    3.5
## 33 Less than every month            shelter 3.292683 1.0060791    3.0
## 34     1-3 times a month            shelter 3.357143 0.8418974    3.0
## 35           Once a week            shelter 3.368421 0.8306976    3.0
## 36 More than once a week            shelter 3.277778 1.1615534    3.0
## 37 Less than every month         activities 3.219512 0.9620861    3.0
## 38     1-3 times a month         activities 3.571429 1.0163499    3.5
## 39           Once a week         activities 3.842105 0.6882472    4.0
## 40 More than once a week         activities 3.500000 1.0000000    3.5
## 41 Less than every month             safety 4.536585 0.6744465    5.0
## 42     1-3 times a month             safety 4.500000 0.6504436    5.0
## 43           Once a week             safety 4.473684 0.6117753    5.0
## 44 More than once a week             safety 4.444444 0.9085135    5.0
  1. To visualise:
ggplot(data=likert_visitfreq, aes(x=frequency_visit, y = avg, colour = var, group = var)) + 
  geom_line()+
  geom_dl(aes(label = var), method = list(dl.combine("first.points"), cex = 0.7))+
  theme_fivethirtyeight() + 
  labs(title="Mean of likert rating per attribute by frequency of visit", y="",x="") +
  theme(plot.title = element_text(size=14, hjust=0.5)) +
  theme(axis.text.y = element_text(hjust=0)) +
  theme(legend.position="none")

3.8.1 Is there any difference in satisfaction for northern and southern section?

The responses showed higher satisfaction (higher mean of likert rating) in the southern section for: * layout * food variety * flora and fauna * seating * shelter * safety

The responses showed higher satisfaction (higher mean of likert rating) in the northern section for: * wayfinding * access * food affordability * crowdedness * activities

likert_visitfreq_northsouth <- data %>% 
  group_by(frequency_visit,park_section) %>% 
  summarise_at(c("satisfaction_layout", "satisfaction_wayfinding", "satisfaction_access","satisfaction_florafauna","satisfaction_food_variety","satisfaction_food_affordability","satisfaction_crowdedness","satisfaction_seating","satisfaction_shelter","satisfaction_activities","satisfaction_safety"), funs(mean, sd,median), na.rm = TRUE) %>% 
  filter(frequency_visit!="NA") %>% 
  filter(park_section!="NA")

likert_visitfreq_northsouth <- melt(setDT(likert_visitfreq_northsouth), 
                         measure = patterns("mean", "sd","median"),
                         variable.name = 'var', value.name = c('avg', 'sd','median'))


likert_visitfreq_northsouth<-likert_visitfreq_northsouth %>% 
  mutate(var=recode_factor(likert_visitfreq_northsouth$var, `1` = "layout", `2` = "wayfinding", `3` = "access",`4`="flora&fauna",`5`="food_variety",`6`="food_affordability",`7`="crowdedness",`8`="seating",`9`="shelter",`10`="activities",`11`="safety")) %>% 
  filter(likert_visitfreq_northsouth$frequency_visit!="NA")

freq_visit_levels <- c("Less than every month","1-3 times a month","Once a week","More than once a week")
likert_visitfreq_northsouth <- likert_visitfreq_northsouth %>% 
  mutate(frequency_visit=parse_factor(frequency_visit,levels=freq_visit_levels,ordered=T))

knitr::kable(likert_visitfreq_northsouth %>% 
  group_by(park_section, var) %>% 
  summarise(avg=mean(avg)) %>% 
  arrange(var))
park_section var avg
Northern (nearest to Botanic Gardens MRT) layout 4.200000
Southern (nearest to Gleneagles Hospital) layout 4.462744
Northern (nearest to Botanic Gardens MRT) wayfinding 4.180357
Southern (nearest to Gleneagles Hospital) wayfinding 4.120860
Northern (nearest to Botanic Gardens MRT) access 4.461607
Southern (nearest to Gleneagles Hospital) access 4.450122
Northern (nearest to Botanic Gardens MRT) flora&fauna 4.441071
Southern (nearest to Gleneagles Hospital) flora&fauna 4.527800
Northern (nearest to Botanic Gardens MRT) food_variety 2.936607
Southern (nearest to Gleneagles Hospital) food_variety 3.141802
Northern (nearest to Botanic Gardens MRT) food_affordability 2.746429
Southern (nearest to Gleneagles Hospital) food_affordability 2.679627
Northern (nearest to Botanic Gardens MRT) crowdedness 3.177679
Southern (nearest to Gleneagles Hospital) crowdedness 2.949188
Northern (nearest to Botanic Gardens MRT) seating 3.255357
Southern (nearest to Gleneagles Hospital) seating 3.978044
Northern (nearest to Botanic Gardens MRT) shelter 3.085714
Southern (nearest to Gleneagles Hospital) shelter 3.530073
Northern (nearest to Botanic Gardens MRT) activities 3.541071
Southern (nearest to Gleneagles Hospital) activities 3.525041
Northern (nearest to Botanic Gardens MRT) safety 4.321429
Southern (nearest to Gleneagles Hospital) safety 4.643912
ggplot(data=likert_visitfreq_northsouth, aes(x=frequency_visit, y = avg, colour = var, group = var)) + 
  geom_line()+
  geom_dl(aes(label = var), method = list(dl.combine("first.points"), cex = 0.7))+
  theme_fivethirtyeight() + 
  labs(title="Mean of likert rating per attribute by frequency of visit", y="",x="") +
  theme(plot.title = element_text(size=14, hjust=0.5)) +
  theme(axis.text.y = element_text(hjust=0)) +
  theme(legend.position="none")+
  facet_wrap(~(park_section))+
  theme(axis.text.x = element_text(angle = 20, hjust = 1))

3.9 Is there any difference in age distribution for northern and southern section?

Respondents of both sections were mostly around the age of 30 years old. The southern section showed a higher proportion of older people (>50 years old).

gg <- data %>% 
  filter(park_section!="NA") %>% 
  ggplot(aes(x=age)) + geom_histogram(binwidth=10)+facet_wrap(~park_section)+
  theme_fivethirtyeight() + 
  theme(plot.title = element_text(size=14, hjust=0.5))+
  theme(legend.position="none")+
  labs(title="Age Distribution in different park sections") +
  theme(axis.title = element_text()) + ylab("Frequency")+xlab("Age")
ggplotly(gg)

3.10 Botanic Gardens Survey Analysis (previous try)

3.10.1 Loading the data

botanic_surveys <- read_sheet("1BFAqMUUn3mDq0OdStNYnWZh0Rr392LXfPMJuXLKMXr0")
## Reading from 'Botanic Gardens Intercept Survey'
## Range "'Singapore Botanic Gardens Survey'"

3.10.2 Lots of data cleaning

botanic_surveys <- subset(botanic_surveys,botanic_surveys$`(Internal) What is your (interviewer) name?`!="Test")
botanic_surveys <- subset(botanic_surveys,botanic_surveys$`(Internal) What is your (interviewer) name?`!="Test Kana")
botanic_surveys <- subset(botanic_surveys,botanic_surveys$`(Internal) What is your (interviewer) name?`!="Atr")
botanic_surveys <- subset(botanic_surveys,botanic_surveys$`(Internal) What is your (interviewer) name?`!="Mister")

table(botanic_surveys$`What gender do you identify as?`)
## 
## Couple Female   Male 
##      2     63     68
botanic_surveys$`What neighbourhood do you live in?`<-toupper(botanic_surveys$`What neighbourhood do you live in?`)
botanic_surveys <- botanic_surveys %>% 
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "AMK", "ANG MO KIO")) %>% 
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "BY TIMAH","BUKIT TIMAH")) %>%
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "NEARBY BUKIT TIMAH", "BUKIT TIMAH")) %>%
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "BUKIT TIMAH ROAD", "BUKIT TIMAH")) %>%
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "NEARBY NUKIT TIMAH", "BUKIT TIMAH")) %>%
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "UPP BUKIT TIMAH", "BUKIT TIMAH")) %>%
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "JURONG WEST.", "JURONG WEST")) %>%
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "NOVENA.", "NOVENA")) %>%
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "WATTEN ESTATE.", "WATTEN ESTATE")) %>%
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "MALAYSIA.", "MALAYSIA")) %>%
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "HOLLAND ROAD", "HOLLAND V")) %>%
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "TELOK BELANGAH", "TELOK BLANGAH")) %>% 
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "YCK", "YIO CHU KANG")) %>% 
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "WOODLAND", "WOODLANDS")) %>% 
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "QUEENSTOWN AND CCK", "QUEENSTOWN")) %>% 
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "WEST", "OTHERS")) %>% 
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "NOT MENTIONED", "OTHERS")) %>% 
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "NORTH EAST", "OTHERS")) %>% 
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "JERVOIS ROAD", "OTHERS")) %>% 
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "SHERATON TOWER", "OTHERS")) %>%
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "YOTEL", "OTHERS")) %>%
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "STEVEN ROAD", "STEVENS ROAD")) %>% 
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "YOU PANDAN/FARREER MARKET", "FARRER ROAD")) %>% 
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "FARRER RD", "FARRER ROAD")) %>% 
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "CLEMENT", "CLEMENTI")) %>%
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "JURONG EAST", "JURONG")) %>% 
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "JURONG WEST", "JURONG")) %>% 
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "JURONG OTHERS", "JURONG")) %>% 
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "HOUGANG AREA", "HOUGANG")) %>%
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "MALAYSIASABAH", "MALAYSIA"))

botanic_countries <- botanic_surveys %>% 
  mutate(Overseas=`What neighbourhood do you live in?`%!in%c("ANG MO KIO","BEDOK","BISHAN","BOTANIC AREA","BUKIT BATOK","BUKIT MERAH","BUKIT PANJANG","BUKIT TIMAH",
                                                               "CHOA CHU KANG","CLEMENTI","CORONATION ROAD","EAST COAST","FARRER ROAD","HAVELOCK","HOLLAND V","HOUGANG",
                                                               "JURONG","KAKI BUKIT","KATONG","KENT RIDGE","KOVAN","NEWTON","NOVENA","ORCHARD","PASIR RIS","PAYA LEBAR",
                                                               "PUNGGOL","QUEENSTOWN","REDHILL","SELETAR","SENGKANG","SERANGOON","SINGAPORE","STEVENS ROAD","TAN KAH KEE","TANGLIN",
                                                               "TELOK BLANGAH","THOMSON","TIONG BAHRU","TOA PAYOH","WATTEN ESTATE","WOODLANDS","YIO CHU KANG"))


botanic_surveys <- botanic_surveys %>% 
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "CLEMENTII", "CLEMENTI")) %>% 
  mutate(`What neighbourhood do you live in?` = str_replace(`What neighbourhood do you live in?`, "WOODLANDSS","WOODLANDS"))

botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="ANG MO KIO"] <- "North-east"
## Warning: Unknown or uninitialised column: 'Region'.
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="BEDOK"] <- "East"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="BISHAN"] <- "Central"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="BOTANIC AREA"] <- "Central"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="BUKIT BATOK"] <- "West"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="BUKIT MERAH"] <- "Central"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="BUKIT PANJANG"] <- "West"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="CHOA CHU KANG"] <- "West"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="CLEMENTI"] <- "West"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="CORONATION ROAD"] <- "Central"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="EAST COAST"] <- "East"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="ENGLAND"] <- "Overseas"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="FARRER ROAD"] <- "Central"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="FRANCE"] <- "Overseas"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="HAVELOCK"] <- "Central"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="HO CHIH MINH"] <- "Overseas"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="HOLLAND"] <- "Overseas"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="HOLLAND V"] <- "Central"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="HOUGANG"] <- "North-east"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="INDIA"] <- "Overseas"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="INDONESIA"] <- "Overseas"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="ITALY"] <- "Overseas"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="JURONG"] <- "West"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="KAKI BUKIT"] <- "East"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="KATONG"] <- "East"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="KENT RIDGE"] <- "West"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="KOVAN"] <- "North-east"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="LONDON, UK"] <- "Overseas"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="MALAYSIA"] <- "Overseas"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="MALAYSIA SABAH"] <- "Overseas"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="OTHERS"] <- "Others"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="NEWTON"] <- "Central"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="ORCHARD"] <- "Central"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="NOVENA"] <- "Central"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="PASIR RIS"] <- "East"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="PAYA LEBAR"] <- "East"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="PENANG"] <- "Overseas"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="POLAND"] <- "Overseas"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="PUNGGOL"] <- "North-east"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="QUEENSTOWN"] <- "Central"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="REDHILL"] <- "Central"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="SELETAR"] <- "North-east"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="SENGKANG"] <- "North-east"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="SERANGOON"] <- "North-east"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="SINGAPORE"] <- "Others"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="STEVENS ROAD"] <- "Central"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="TAIWAN"] <- "Overseas"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="TAN KAH KEE"] <- "Central"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="TANGLIN"] <- "Central"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="TELOK BLANGAH"] <- "Central"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="THAILAND"] <- "Overseas"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="THOMSON"] <- "Central"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="TIONG BAHRU"] <- "Central"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="TOA PAYOH"] <- "Central"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="USA"] <- "Overseas"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="WATTEN ESTATE"] <- "Central"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="WOODLANDS"] <- "North"
botanic_surveys$Region[botanic_surveys$`What neighbourhood do you live in?`=="YIO CHU KANG"] <- "North-east"

botanic_surveys <- mutate(botanic_surveys,`What is your age?`=5*round(`What is your age?`/5))

Data parsing for multiple response: reasons of visit and creating a table with some open-ended “reasons of visit” as “others”

botanic_reasons <- botanic_surveys %>% 
  select(`What is your reason for visiting the Singapore Botanic Gardens today?`) %>% 
  separate(`What is your reason for visiting the Singapore Botanic Gardens today?`, c('1','2','3','4','5','6','7','8','9','10','11','12'), sep =',', remove = FALSE, fill="right") %>% 
  stack(botanic_reasons, select=-`What is your reason for visiting the Singapore Botanic Gardens today?`) 
botanic_reasons <- as.data.frame(table(trimws(botanic_reasons$values)))
names(botanic_reasons)[1] = 'Reasons'
'%!in%' <- function(x,y)!('%in%'(x,y))
botanic_reasons <- botanic_reasons %>% 
  mutate(Others=(Reasons%!in%c("To walk the dog","To exercise","To relax","To listen to and observe nature","To escape from the city","To take photographs","To meet others","To be with my children","To get inspiration","To meditate","To attend events (eg. movies in the park, symphony performances, and tours)")))
botanic_reasons_others <- botanic_reasons %>% 
  group_by(Others) %>% 
  summarise(Freq=sum(Freq)) 
botanic_reasons_others <- botanic_reasons_others %>% 
  filter(Others=="TRUE") %>% 
  mutate(Reasons="Others")
botanic_reasons <- rbind(botanic_reasons,botanic_reasons_others)
botanic_reasons_less <- botanic_reasons %>% 
  filter(Others==FALSE | Reasons=="Others") %>% 
  select(-Others)
botanic_who <- botanic_surveys %>% 
  select(`Who are you here with today?`) %>% 
  separate(`Who are you here with today?`, c('1','2','3','4','5','6','7'), sep =',', remove = FALSE, fill="right") %>% 
  stack(botanic_who, select=-`Who are you here with today?`)
botanic_who <- as.data.frame(table(trimws(botanic_who$values)))
names(botanic_who)[1] = 'Who'

Data parsing for multiple response: commute

botanic_commute <- botanic_surveys %>% 
  select(`How did you get here today?`) %>% 
  separate(`How did you get here today?`, c('1','2','3','4','5','6','7'), sep =',', remove = FALSE, fill="right") %>% 
  stack(botanic_commute, select=-`How did you get here today?`)
botanic_commute <- as.data.frame(table(trimws(botanic_commute$values)))
names(botanic_commute)[1] = 'mode'

3.10.3 Frequency plots

ggplot(data=botanic_surveys, aes(botanic_surveys$`What is your age?`)) + 
  geom_histogram(breaks=seq(15, 80, by = 10), 
                 col="black") + 
  theme_fivethirtyeight()+
  theme(axis.title = element_text()) + ylab("Frequency")+xlab("Age")+
  ggtitle("Histogram for age of respondents")

#install.packages("ggplot2")
library(ggplot2)
#install.packages("plotly")
library(plotly)
positions <- c("This is my first time", "Longer than a year ago", "Within the last year", "Within the last month","Less than a week ago")
ggplot(botanic_surveys, aes(botanic_surveys$`When was the last time you have visited the Singapore Botanic Gardens?`))+
  ggtitle("When was the last time you have visited  \n the Singapore Botanic Gardens?")+
  geom_bar(fill=c("#6baed6", "#bdd7e7","#9ecae1","#c6dbef","#08519c"))+ 
  geom_text(stat='count', aes(label=..count..), vjust=0, hjust=-2,color="black")+
  scale_x_discrete(limits = positions)+
  theme_fivethirtyeight()+
  coord_flip()+
  theme_fivethirtyeight()+
  theme(plot.title = element_text(size=14, hjust=0.5)) +
  theme(axis.text.y = element_text(hjust=0))+
  theme(axis.title = element_text()) + ylab("Frequency")+xlab(" ")

positions <- c("Less than every month", "1-3 times a month", "Once a week","More than once a week")
botanic_surveys %>% 
  filter(`How often do you normally visit this place?`!="NA") %>% 
  ggplot(aes(`How often do you normally visit this place?`))+
  xlab("")+ylab("Frequency")+
  ggtitle("How often do you normally visit this place?")+
  geom_bar(fill=c("#2171b5","#c6dbef","#bdd7e7","#6baed6"))+ 
  geom_text(stat='count', aes(label=..count..), vjust=0, hjust=-1,color="black")+
  coord_flip()+
  scale_x_discrete(limits=positions)+
  theme_fivethirtyeight()+
  theme(plot.title = element_text(size=14, hjust=0.5)) +
  theme(axis.text.y = element_text(hjust=0))+
  theme(axis.title = element_text()) + ylab("Frequency")+xlab(" ")

a <- table(botanic_surveys$`When was the last time you have visited the Singapore Botanic Gardens?`,botanic_surveys$`How often do you normally visit this place?`)
a <- as.data.frame(a)
names(a)[1] = 'Last Visit'
names(a)[2] = 'Visit Frequency'
positions <- c("Less than every month", "1-3 times a month", "Once a week","More than once a week")
botanic_surveys %>% 
  filter(`When was the last time you have visited the Singapore Botanic Gardens?`!="This is my first time") %>% 
  ggplot() + geom_bar(aes(y = Freq, x = `Visit Frequency`, fill = `Last Visit`), 
                    data = a,
                    stat="identity") +
  theme_fivethirtyeight() + 
  theme(plot.title = element_text(size=14, hjust=0.5))+
  labs(title="Count of visit frequency by last visit") +
  scale_x_discrete(limits=positions)+
  theme(axis.title = element_text("")) + ylab("Frequency")+xlab(" ")+
  theme(legend.title=element_blank())+
  theme(legend.key.height=unit(1,"line"))+
  theme(legend.key.width=unit(1,"line"))+
  theme(legend.spacing.x = unit(0.3, 'cm'))+
  scale_fill_brewer(palette="Spectral") 

positions <- c("< 15 minutes", "15 - 30 minutes", "30 minutes to an hour","> 1 hour")
ggplot(botanic_surveys, aes(`How long do you plan to stay here today?`))+
  xlab("")+ylab("Frequency")+
  ggtitle("How long do you plan to stay here today?")+
  geom_bar(fill=c("#c6dbef","#bdd7e7","#6baed6","#2171b5"))+ 
  scale_x_discrete(limits = positions)+
  geom_text(stat='count', aes(label=..count..), vjust=-1)+
  theme_fivethirtyeight()+
  theme(plot.title = element_text(size=14, hjust=0.5)) +
  theme(axis.text.y = element_text(hjust=0))+
  theme(axis.title = element_text()) + ylab("Frequency")+xlab(" ")

botanic_reasons_less %>% 
  ggplot(aes(x=reorder(Reasons,Freq),y=Freq))+
  theme_minimal()+
  geom_bar(stat="identity",fill=c("#f7fbff","#f7fbff","#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"))+
  geom_text(stat='identity', aes(label=Freq), vjust=0, hjust=-1,color="black")+
  coord_flip()+
  theme_fivethirtyeight() + 
  labs(title="What is your reason for visiting the \n Singapore Botanic Gardens today?")+
  theme(plot.title = element_text(size=14, hjust=0.5)) +
  theme(axis.text.y = element_text(hjust=0))+
  theme(axis.title = element_text()) + ylab("Frequency")+xlab(" ")

botanic_who %>% 
  filter(Who!="") %>% 
  ggplot(aes(x=reorder(Who,Freq),y=Freq))+theme_minimal()+
  geom_bar(stat="identity")+
  geom_text(stat='identity', aes(label=Freq), vjust=0, hjust=-1,fill="black")+
  ylab("Frequency")+xlab(" ")+
  coord_flip()+
  scale_fill_brewer(palette = "Blues")+
  theme_fivethirtyeight() + 
  labs(title="Who are you with here today?")+
  theme(plot.title = element_text(size=14, hjust=0.5)) +
  theme(axis.text.y = element_text(hjust=0))+
  theme(axis.title = element_text()) + ylab("Frequency")+xlab(" ")
## Warning: Ignoring unknown parameters: fill

botanic_commute %>% 
  filter(mode!="") %>% 
  ggplot(aes(x=reorder(mode,Freq),y=Freq))+theme_minimal()+
  geom_bar(stat="identity",fill=c("#deebf7","#deebf7","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c"))+
  geom_text(stat='identity', aes(label=Freq), vjust=0, hjust=-1,color="black")+
  coord_flip()+
  theme_fivethirtyeight() + 
  theme(plot.title = element_text(size=14, hjust=0.5)) +
  theme(axis.text.y = element_text(hjust=0))+
  labs(title="How did you get here today?")+
  theme(axis.title = element_text()) + ylab("Frequency")+xlab(" ")

library(ggridges)
## 
## Attaching package: 'ggridges'
## The following object is masked from 'package:ggplot2':
## 
##     scale_discrete_manual
botanic_surveys %>% 
  filter(`What gender do you identify as?`!="Couple") %>% 
  ggplot(aes(x = `What is your age?`, y = `What gender do you identify as?`)) +
  geom_density_ridges(aes(fill = `What gender do you identify as?`),scale=0.6) +
  scale_fill_manual(values = c("#c60d11", "#1c2e7c"))+
  theme_fivethirtyeight() + 
  theme(plot.title = element_text(size=14, hjust=0.5))+
  theme(legend.position="none")+
  labs(title="Age Distribution by Gender") +
  theme(axis.title = element_text()) + ylab(" ")+xlab("Age")
## Picking joint bandwidth of 5.31

3.10.4 Inter-variable frequency plots

botanic_mode_neighbourhood_part1 <- botanic_surveys %>% 
  select(Region, `How did you get here today?`) %>% 
  separate(`How did you get here today?`, c('1','2'), sep =',', remove = FALSE, fill="right") %>% 
  select(-'How did you get here today?') %>% 
  select(-"2")
botanic_mode_neighbourhood_part2 <- botanic_surveys %>% 
  select(Region, `How did you get here today?`) %>% 
  separate(`How did you get here today?`, c('1','2'), sep =',', remove = FALSE, fill="right") %>% 
  select(-'How did you get here today?') %>% 
  select(-"1")
names(botanic_mode_neighbourhood_part2)[2] = '1'
botanic_mode_neighbourhood <- na.omit(rbind(botanic_mode_neighbourhood_part1,botanic_mode_neighbourhood_part2))
names(botanic_mode_neighbourhood)[2] = 'Mode'
botanic_mode_neighbourhood <- botanic_mode_neighbourhood[-which(botanic_mode_neighbourhood$Mode==""), ]
botanic_mode_neighbourhood<- botanic_mode_neighbourhood %>% 
  mutate(Mode=str_trim(Mode,"left"))
knitr::kable(table(botanic_mode_neighbourhood$Region,botanic_mode_neighbourhood$Mode))
Bicycle/Personal mobility device Bus Car Grab Lorry Motorbike MRT On foot Taxi
Central 0 4 22 0 0 0 7 11 2
East 0 2 4 0 1 0 3 1 0
North 1 1 1 0 0 0 2 0 0
North-east 0 0 7 0 0 0 9 2 1
Others 1 1 1 0 0 0 2 1 0
Overseas 0 4 0 0 0 1 12 2 3
West 0 0 6 1 0 0 7 1 0
botanic_mode_neighbourhood_part1 <- botanic_surveys %>% 
  select(`What neighbourhood do you live in?`, `How did you get here today?`) %>% 
  separate(`How did you get here today?`, c('1','2'), sep =',', remove = FALSE, fill="right") %>% 
  filter(`What neighbourhood do you live in?`!="NA") %>% 
  select(-'How did you get here today?') %>% 
  select(-"2")
botanic_mode_neighbourhood_part2 <- botanic_surveys %>% 
  select(`What neighbourhood do you live in?`, `How did you get here today?`) %>% 
  separate(`How did you get here today?`, c('1','2'), sep =',', remove = FALSE, fill="right") %>% 
  filter(`What neighbourhood do you live in?`!="NA") %>% 
  select(-'How did you get here today?') %>% 
  select(-"1")
names(botanic_mode_neighbourhood_part2)[2] = '1'
botanic_mode_neighbourhood <- na.omit(rbind(botanic_mode_neighbourhood_part1,botanic_mode_neighbourhood_part2))
names(botanic_mode_neighbourhood)[2] = 'Mode'
botanic_mode_neighbourhood <- botanic_mode_neighbourhood[-which(botanic_mode_neighbourhood$Mode== ""), ]
botanic_mode_neighbourhood<- botanic_mode_neighbourhood %>% 
  mutate(Mode=str_trim(Mode,"left"))
knitr::kable(table(botanic_mode_neighbourhood$`What neighbourhood do you live in?`,botanic_mode_neighbourhood$Mode))
Bicycle/Personal mobility device Bus Car Grab Lorry Motorbike MRT On foot Taxi
ANG MO KIO 0 0 2 0 0 0 1 1 0
BEDOK 0 0 0 0 0 0 0 1 0
BISHAN 0 0 5 0 0 0 0 0 0
BOTANIC AREA 0 0 0 0 0 0 0 1 0
BUKIT BATOK 0 0 1 0 0 0 0 0 0
BUKIT MERAH 0 1 0 0 0 0 1 0 0
BUKIT PANJANG 0 0 0 1 0 0 0 0 0
BUKIT TIMAH 0 0 7 0 0 0 3 8 0
CHOA CHU KANG 0 0 0 0 0 0 1 0 0
CLEMENTI 0 0 2 0 0 0 1 0 0
CORONATION ROAD 0 0 1 0 0 0 0 0 0
EAST COAST 0 1 3 0 0 0 1 0 0
ENGLAND 0 0 0 0 0 0 1 0 0
FARRER ROAD 0 0 0 0 0 0 0 2 0
FRANCE 0 0 0 0 0 0 1 0 0
HAVELOCK 0 0 1 0 0 0 0 0 0
HO CHIH MINH 0 1 0 0 0 0 0 0 0
HOLLAND 0 0 0 0 0 0 1 0 0
HOLLAND V 0 0 5 0 0 0 0 0 0
HOUGANG 0 0 0 0 0 0 3 0 1
INDIA 0 0 0 0 0 0 2 1 0
INDONESIA 0 0 0 0 0 0 1 0 0
ITALY 0 0 0 0 0 0 1 0 0
JURONG 0 0 3 0 0 0 3 1 0
KAKI BUKIT 0 0 0 0 1 0 0 0 0
KATONG 0 0 0 0 0 0 1 0 0
KENT RIDGE 0 0 0 0 0 0 2 0 0
KOVAN 0 0 0 0 0 0 1 0 0
LONDON, UK 0 0 0 0 0 0 0 0 1
MALAYSIA 0 1 0 0 0 1 2 0 0
MALAYSIA SABAH 0 1 0 0 0 0 0 0 0
NEWTON 0 0 2 0 0 0 1 0 0
NOVENA 0 0 2 0 0 0 0 0 0
ORCHARD 0 0 0 0 0 0 0 2 0
OTHERS 1 1 0 0 0 0 2 1 0
PASIR RIS 0 1 0 0 0 0 1 0 0
PAYA LEBAR 0 0 1 0 0 0 0 0 0
PENANG 0 0 0 0 0 0 1 0 0
POLAND 0 0 0 0 0 0 0 0 1
PUNGGOL 0 0 1 0 0 0 0 1 0
QUEENSTOWN 0 1 1 0 0 0 2 0 1
REDHILL 0 1 0 0 0 0 1 0 0
SELETAR 0 0 1 0 0 0 0 0 0
SENGKANG 0 0 0 0 0 0 3 0 0
SERANGOON 0 0 2 0 0 0 0 0 0
SINGAPORE 0 0 1 0 0 0 0 0 0
STEVENS ROAD 0 0 0 0 0 0 0 1 0
TAIWAN 0 0 0 0 0 0 0 0 1
TAN KAH KEE 0 0 0 0 0 0 0 1 0
TANGLIN 0 0 0 0 0 0 0 4 1
TELOK BLANGAH 0 0 1 0 0 0 0 0 0
THAILAND 0 0 0 0 0 0 1 0 0
THOMSON 0 0 1 0 0 0 0 0 0
TIONG BAHRU 0 0 1 0 0 0 0 0 0
TOA PAYOH 0 1 1 0 0 0 2 0 0
USA 0 1 0 0 0 0 1 1 0
WATTEN ESTATE 0 0 1 0 0 0 0 0 0
WOODLANDS 1 1 1 0 0 0 2 0 0
YIO CHU KANG 0 0 1 0 0 0 1 0 0
botanic_age_reason_part1 <- botanic_surveys %>% 
  select(`What is your age?`, `What is your reason for visiting the Singapore Botanic Gardens today?`) %>% 
  separate(`What is your reason for visiting the Singapore Botanic Gardens today?`, c('1','2','3','4','5','6'), sep =',', remove = FALSE, fill="right") %>% 
  filter(`What is your age?`!="NA") %>% 
  select(-`What is your reason for visiting the Singapore Botanic Gardens today?`) %>% 
  select(-c('2','3','4','5','6'))
botanic_age_reason_part2 <- botanic_surveys %>% 
  select(`What is your age?`, `What is your reason for visiting the Singapore Botanic Gardens today?`) %>% 
  separate(`What is your reason for visiting the Singapore Botanic Gardens today?`, c('1','2','3','4','5','6'), sep =',', remove = FALSE, fill="right") %>% 
  filter(`What is your age?`!="NA") %>% 
  select(-`What is your reason for visiting the Singapore Botanic Gardens today?`) %>% 
  select(-c('1','3','4','5','6'))
botanic_age_reason_part3 <- botanic_surveys %>% 
  select(`What is your age?`, `What is your reason for visiting the Singapore Botanic Gardens today?`) %>% 
  separate(`What is your reason for visiting the Singapore Botanic Gardens today?`, c('1','2','3','4','5','6'), sep =',', remove = FALSE, fill="right") %>% 
  filter(`What is your age?`!="NA") %>% 
  select(-`What is your reason for visiting the Singapore Botanic Gardens today?`) %>% 
  select(-c('2','1','4','5','6'))
botanic_age_reason_part4 <- botanic_surveys %>% 
  select(`What is your age?`, `What is your reason for visiting the Singapore Botanic Gardens today?`) %>% 
  separate(`What is your reason for visiting the Singapore Botanic Gardens today?`, c('1','2','3','4','5','6'), sep =',', remove = FALSE, fill="right") %>% 
  filter(`What is your age?`!="NA") %>% 
  select(-`What is your reason for visiting the Singapore Botanic Gardens today?`) %>% 
  select(-c('2','3','1','5','6'))
botanic_age_reason_part5 <- botanic_surveys %>% 
  select(`What is your age?`, `What is your reason for visiting the Singapore Botanic Gardens today?`) %>% 
  separate(`What is your reason for visiting the Singapore Botanic Gardens today?`, c('1','2','3','4','5','6'), sep =',', remove = FALSE, fill="right") %>% 
  filter(`What is your age?`!="NA") %>% 
  select(-`What is your reason for visiting the Singapore Botanic Gardens today?`) %>% 
  select(-c('2','3','4','1','6'))
botanic_age_reason_part6 <- botanic_surveys %>% 
  select(`What is your age?`, `What is your reason for visiting the Singapore Botanic Gardens today?`) %>% 
  separate(`What is your reason for visiting the Singapore Botanic Gardens today?`, c('1','2','3','4','5','6'), sep =',', remove = FALSE, fill="right") %>% 
  filter(`What is your age?`!="NA") %>% 
  select(-`What is your reason for visiting the Singapore Botanic Gardens today?`) %>% 
  select(-c('2','3','4','5','1'))
names(botanic_age_reason_part2)[2] = '1'
names(botanic_age_reason_part3)[2] = '1'
names(botanic_age_reason_part4)[2] = '1'
names(botanic_age_reason_part5)[2] = '1'
names(botanic_age_reason_part6)[2] = '1'
botanic_age_reason <- na.omit(rbind(botanic_age_reason_part1,botanic_age_reason_part2,botanic_age_reason_part3,botanic_age_reason_part4,botanic_age_reason_part5,botanic_age_reason_part6))
names(botanic_age_reason)[2] = 'Activity'
botanic_age_reason <- botanic_age_reason[-which(botanic_age_reason$Activity== ""), ]
botanic_age_reason<- botanic_age_reason %>% 
  mutate(Activity=str_trim(Activity,"left"))
a <- table(botanic_age_reason$`What is your age?`,botanic_age_reason$Activity)
a <- as.data.frame(a)
write.table(a,"age_activities.csv")
colnames(a)=c("Age","Activity","Freq")
a <- a %>% 
  filter(Activity%in%c("To relax","To exercise","To listen to and observe nature","To escape from the city","To take photographs","To meet others","To be with my children","To get inspiration","To walk the dog","To meditate")) %>% 
  group_by(Activity) %>% 
  mutate(per=(round(Freq/sum(Freq)*100, 2))) %>% 
  ungroup
a$per <- as.numeric(as.character(a$per))

botanic_age_reason_elderly <- botanic_age_reason %>% 
  filter(`What is your age?`>=60) 
#sort(table(botanic_age_reason_elderly$Activity))

botanic_surveys_elderly <- botanic_surveys %>% 
  filter(`What is your age?`>=60)
#table(botanic_surveys_elderly$`Who are you here with today?`)

ggplot(a,aes(Age,Activity)) + geom_tile(aes(alpha = per, fill = Activity)) +
  scale_alpha(range = c(0.1, 1))+theme_fivethirtyeight()+
  labs(title="Count of age group and activity") +
  theme(axis.title = element_text("")) + ylab("Activity")+xlab("Age")

3.10.5 Word clouds for likes and dislikes of the garden

#install.packages("slam")
#install.packages('devtools')
library(devtools)
slam_url <- "https://cran.r-project.org/src/contrib/Archive/slam/slam_0.1-37.tar.gz"
#install_url(slam_url)
#install.packages("http://cran.r-project.org/bin/windows/contrib/3.0/tm_0.5-10.zip",repos=NULL)
library(tm)
#install.packages("SnowballC")
library(SnowballC)
#install.packages("RColorBrewer")
library(RColorBrewer)
library(dplyr)
#install.packages("wordcloud")
library(wordcloud)

Likes of the gardens

#like
like <- botanic_surveys$`What do you like about this place?` #open-response variable to a new variable for text transformations
like <- gsub("[^[:graph:]]", " ", like) #get rid of non graphical characters
like <- gsub("[[:punct:]]", "", like)# Remove punctuation
like <- gsub("rt", "", like)# Replace blank space ("rt")
like <- gsub("\\s+"," ",like)
like <- gsub("[ |\t]{3,}", "", like)# Remove tabs
like <- gsub("^ ", "", like)# Remove blank spaces at the beginning
like <- gsub(" $", "", like)# Remove blank spaces at the end
like <- tolower(like)#convert all text to lower case
table(like==c("no","nil","none"))
## Warning in like == c("no", "nil", "none"): longer object length is not a
## multiple of shorter object length
## 
## FALSE 
##   133
myCorpus <- Corpus(VectorSource(like))
myCorpus <- tm_map(myCorpus, removeNumbers)
myCorpus <- tm_map(myCorpus, removeWords, stopwords("english")) #removes common english stopwords
myCorpus <- tm_map(myCorpus, removeWords, c("don?t","nil","none","can?t","it?"))  #You can specify words to remove

#build a term-document matrix
myTDM = TermDocumentMatrix(myCorpus, control = list(minWordLength = 1))
m = as.matrix(myTDM)
v = sort(rowSums(m), decreasing = TRUE)
d = data.frame(word = names(v),freq=v)

wordcloud(d$word, freq=d$freq, min.freq=1,scale=c(3,0.5), max.words=500, random.order=FALSE, rot.per=0.35, 
          use.r.layout=FALSE, colors=brewer.pal(8, "Dark2"))

#word associations of "greenery"
findFreqTerms(myTDM, lowfreq =6)
##  [1] "air"       "beautiful" "city"      "fresh"     "garden"   
##  [6] "good"      "green"     "greenery"  "nature"    "nice"     
## [11] "peaceful"  "place"     "plants"    "quiet"     "trees"
findAssocs(myTDM,terms="green",corlimit = 0.1)
##              green
## near          0.35
## ample         0.24
## better        0.24
## centre        0.24
## compared      0.24
## conveniently  0.24
## day           0.24
## field         0.24
## greeneries    0.24
## high          0.24
## hot           0.24
## keep          0.24
## located       0.24
## oasis         0.24
## office        0.24
## old           0.24
## parking       0.24
## parks         0.24
## quite         0.24
## rise          0.24
## road          0.24
## surroundings  0.24
## time          0.24
## whole         0.24
## great         0.21
## spaces        0.18
## cool          0.15
## free          0.15
## hard          0.15
## home          0.15
## large         0.15
## like          0.15
## pleasant      0.15
## fauna         0.11
## flora         0.11
## get           0.11
## space         0.11

Dislikes of the gardens

#dislike wordcloud
dislike <- botanic_surveys$`What do you not like about this place?` #open-response variable to a new variable for text transformations
dislike <- gsub("[^[:graph:]]", " ", dislike) #get rid of non graphical characters
dislike <- gsub("[[:punct:]]", "", dislike)# Remove punctuation
dislike <- gsub("rt", "", dislike)# Replace blank space ("rt")
dislike <- gsub("\\s+"," ",dislike)
dislike <- gsub("[ |\t]{3,}", "", dislike)# Remove tabs
dislike <- gsub("^ ", "", dislike)# Remove blank spaces at the beginning
dislike <- gsub(" $", "", dislike)# Remove blank spaces at the end
dislike <- tolower(dislike)#convert all text to lower case
table(dislike==c("no","nil","none","NA"))
## Warning in dislike == c("no", "nil", "none", "NA"): longer object length is
## not a multiple of shorter object length
## 
## FALSE  TRUE 
##   116     9
myCorpus <- Corpus(VectorSource(dislike))
myCorpus <- tm_map(myCorpus, removeNumbers)
myCorpus <- tm_map(myCorpus, removeWords, stopwords("english")) #removes common english stopwords
myCorpus <- tm_map(myCorpus, removeWords, c("don?t","nil","none","can?t","it?","don?","can?","ceain","tre","tshi"))  #You can specify words to remove

#build a term-document matrix
myTDM = TermDocumentMatrix(myCorpus, control = list(minWordLength = 1))
m = as.matrix(myTDM)
v = sort(rowSums(m), decreasing = TRUE)
d = data.frame(word = names(v),freq=v)

wordcloud(d$word, freq=d$freq, min.freq=1,scale=c(2,0.5), max.words=500, random.order=FALSE, rot.per=0.35, 
          use.r.layout=FALSE, colors=brewer.pal(8, "Dark2"))

Desired changes of the gardens

#change
change <- botanic_surveys$`If you could change or add something to the park, what would that be?` #open-response variable to a new variable for text transformations
change <- gsub("[^[:graph:]]", " ", change) #get rid of non graphical characters
change <- gsub("[[:punct:]]", "", change)# Remove punctuation
change <- gsub("rt", "", change)# Replace blank space ("rt")
change <- gsub("\\s+"," ",change)
change <- gsub("[ |\t]{3,}", "", change)# Remove tabs
change <- gsub("^ ", "", change)# Remove blank spaces at the beginning
change <- gsub(" $", "", change)# Remove blank spaces at the end
change <- tolower(change)#convert all text to lower case
table(change==c("no","nil","none"))
## Warning in change == c("no", "nil", "none"): longer object length is not a
## multiple of shorter object length
## 
## FALSE  TRUE 
##   123     6
myCorpus <- Corpus(VectorSource(change))
myCorpus <- tm_map(myCorpus, removeNumbers)
myCorpus <- tm_map(myCorpus, removeWords, stopwords("english")) #removes common english stopwords
myCorpus <- tm_map(myCorpus, removeWords, c("don?t","nil","none","can?t","it?"))  #You can specify words to remove

#build a term-document matrix
myTDM = TermDocumentMatrix(myCorpus, control = list(minWordLength = 1))
m = as.matrix(myTDM)
v = sort(rowSums(m), decreasing = TRUE)
d = data.frame(word = names(v),freq=v)

wordcloud(d$word, freq=d$freq, min.freq=1,scale=c(3,0.5), max.words=500, random.order=FALSE, rot.per=0.35, 
          use.r.layout=FALSE, colors=brewer.pal(8, "Dark2"))

3.10.6 Likert rating frequency plot

# packages needed for the nice likert plot
library(reshape2)
library(RColorBrewer)
#install.packages("ggthemes")
library(ggthemes)
library(data.table)
#install.packages("RColorBrewer") 
library(RColorBrewer)
likert_data <- as.data.frame(botanic_surveys[,10:20])
likert_data_proportions <- as.data.frame(response.frequencies(likert_data, uniqueitems = 1:5))
likert_data_proportions <- likert_data_proportions %>% 
  mutate(Question=c("Layout of botanic gardens","Wayfinding within botanic gardens","Accessibility of botanic gardens","Satisfaction of flora and fauna", "Variety of food","Affordability of food","Perception of crowdedness","Availability of seating areas","Availability of sheltered areas","Range of activities","Perception of safety")) 
likert_data_proportions <- likert_data_proportions[c("Question","1","2","3","4","5","miss")]
colnames(likert_data_proportions)<-c("Question","Strongly Disagree","Disagree","Neutral","Agree","Strongly Agree","Unanswered")

# Append missing levels
#likert_data_proportions %>% group_by(Question) %>% mutate(value = value / sum(value)) %>% 
  #ggplot(aes(x = Question, y = ifelse(ind %in% 1:2, -value, value), fill = ind)) + 
  #geom_col() +
  #coord_flip()

mytitle<-"Perception of Botanic Gardens"
mylevels<-c("Strongly Disagree","Disagree","Neutral","Agree","Strongly Agree")
tab <- likert_data_proportions[-7]
numlevels<-length(tab[1,])-1
numcenter<-ceiling(numlevels/2)+1
tab$midvalues<-tab[,numcenter]/2
tab2<-cbind(tab[,1],tab[,2:ceiling(numlevels/2)],
            tab$midvalues,tab$midvalues,tab[,numcenter:numlevels+1])
colnames(tab2)<-c("Aspect",mylevels[1:floor(numlevels/2)],"midlow",
                  "midhigh",mylevels[numcenter:numlevels])

numlevels<-length(mylevels)+1
point1<-2
point2<-((numlevels)/2)+1
point3<-point2+1
point4<-numlevels+1
mymin<-(ceiling(max(rowSums(tab2[,point1:point2]))*4)/4)*-100
mymax<-(ceiling(max(rowSums(tab2[,point3:point4]))*4)/4)*100

numlevels<-length(tab[1,])-1
temp.rows<-length(tab2[,1])
pal<-brewer.pal((numlevels-1),"RdBu")
pal[ceiling(numlevels/2)]<-"#DFDFDF"
legend.pal<-pal
pal<-c(pal[1:(ceiling(numlevels/2)-1)], pal[ceiling(numlevels/2)], 
       pal[ceiling(numlevels/2)], pal[(ceiling(numlevels/2)+1):(numlevels-1)])

tab3<-melt(tab2,id="Aspect")
tab3$col<-rep(pal,each=temp.rows)
tab3$value<-tab3$value*100
tab3$Aspect<-str_wrap(tab3$Aspect, width = 40)
tab3$Aspect<-factor(tab3$Aspect, levels = tab2$Aspect[order(-(tab2[,5]+tab2[,6]+tab2[,7]))])
highs<-na.omit(tab3[(length(tab3[,1])/2)+1:length(tab3[,1]),])
lows<-na.omit(tab3[1:(length(tab3[,1])/2),])
lows <- lows[rev(rownames(lows)),]
lows$col <- factor(lows$col, levels = c("#CA0020","#F4A582", "#DFDFDF"))
ggplot() + geom_bar(data=highs, aes(x = Aspect, y=value, fill=col), position="stack", stat="identity") +
  geom_bar(data=lows, aes(x = Aspect, y=-value, fill=col), position="stack", stat="identity") +
  geom_hline(yintercept = 0, color =c("white")) +
  scale_fill_identity("Percent", labels = mylevels, breaks=legend.pal, guide="legend") + 
  theme_fivethirtyeight() + 
  coord_flip() +
  labs(title=mytitle, y="",x="") +
  theme(plot.title = element_text(size=14, hjust=0.5)) +
  theme(axis.text.y = element_text(hjust=0)) +
  theme(legend.position = "bottom") +
  scale_y_continuous(breaks=seq(mymin,mymax,25), limits=c(mymin,mymax))

3.10.7 Likert analysis for age and gender differences

3.10.8 Correlation analysis of attributes

#correlation matrix of factors
botanic_surveys_shorter <- botanic_surveys[,10:20] 
colnames(botanic_surveys_shorter) = c("layout","wayfinding","accessibility","flora & fauna","food variety","food affordability","crowd level","seating areas","sheltered areas","activities range","safety")

# 1. Compute correlation
cormat <- round(cor(botanic_surveys_shorter),2)
# 2. Reorder the correlation matrix by 
# Hierarchical clustering
hc <- hclust(as.dist(1-cormat)/2)
cormat.ord <- cormat[hc$order, hc$order]
# 3. Get the upper triangle
cormat.ord[lower.tri(cormat.ord)]<- NA
# 4. Melt the correlation matrix
require(reshape2)
melted_cormat <- melt(cormat.ord, na.rm = TRUE)
# Create the heatmap
ggplot(melted_cormat, aes(Var2, Var1, fill = value))+
  geom_tile(color = "white")+
  scale_fill_gradient2(low = "blue", high = "red", mid = "white", 
                       midpoint = 0, limit = c(-1,1), space = "Lab",
                       name="Pearson\nCorrelation") + # Change gradient color
  theme_fivethirtyeight()+ # minimal theme
  theme(axis.text.x = element_text(angle = 45, vjust = 1, 
                                   size = 12, hjust = 1))+
  coord_fixed()

3.11 Reflections on survey analysis

Comparison of methods for survey data cleaning

Data cleaning Bad practice Good practice
Working with long column titles with spacings Leaving it as it is, and using ` throughout To use clean_names() from janitor package to replace spacings with underscores and rename function to shorten the column names
Dealing with multiple response questions To create a separate table from each column of multiple response question, which withdraws relation to other columns in the original dataset To use group_by, count and spread functions to split the column and append the resulting columns to the original dataset