Browse Source

Add education dataset

but needs tweaks e.g. info, bolding
Petra Lamborn 3 years ago
parent
commit
5ab6dce9f6
3 changed files with 328 additions and 103 deletions
  1. 66
    1
      scratch.R
  2. 259
    102
      viz/app.R
  3. 3
    0
      viz/extras.R

+ 66
- 1
scratch.R View File

@@ -90,6 +90,58 @@ work_simp %>%
90 90
     total = sum(ifelse(total < 0, 0, total)), .groups="drop"
91 91
   ) -> work_to
92 92
 
93
+edu_simp <- education_travel %>% select(
94
+  res_code = SA2_code_usual_residence_address,
95
+  res_name = SA2_name_usual_residence_address,
96
+  res_east = SA2_usual_residence_easting,
97
+  res_north = SA2_usual_residence_northing,
98
+  edu_code = SA2_code_educational_address,
99
+  edu_name = SA2_name_educational_address,
100
+  edu_east = SA2_educational_easting,
101
+  edu_north = SA2_educational_northing,
102
+  drive = Drive_a_car_truck_or_van,
103
+  passenger = Passenger_in_a_car_truck_or_van,
104
+  walk = Walk_or_jog,
105
+  bicycle = Bicycle,
106
+  scholbus = School_bus,
107
+  pubbus = Public_bus,
108
+  train = Train,
109
+  ferry = Ferry,
110
+  home = Study_at_home,
111
+  other = Other,
112
+  total = Total
113
+)
114
+
115
+edu_simp %>% group_by(res_code, res_name, res_east, res_north) %>%
116
+  summarise(
117
+    drive = sum(ifelse(drive < 0, 0, drive)),
118
+    passenger = sum(ifelse(passenger < 0, 0, passenger)),
119
+    walk = sum(ifelse(walk < 0, 0, walk)),
120
+    bicycle = sum(ifelse(bicycle < 0, 0, bicycle)),
121
+    scholbus = sum(ifelse(scholbus < 0, 0, scholbus)),
122
+    pubbus = sum(ifelse(pubbus < 0, 0, pubbus)),
123
+    train = sum(ifelse(train < 0, 0, train)),
124
+    ferry = sum(ifelse(ferry < 0, 0, ferry)),
125
+    home = sum(ifelse(home < 0, 0, home)),
126
+    other = sum(ifelse(other < 0, 0, other)),
127
+    total = sum(ifelse(total < 0, 0, total)), .groups="drop"
128
+  ) -> edu_from
129
+
130
+edu_simp %>% group_by(edu_code, edu_name, edu_east, edu_north) %>%
131
+  summarise(
132
+    drive = sum(ifelse(drive < 0, 0, drive)),
133
+    passenger = sum(ifelse(passenger < 0, 0, passenger)),
134
+    walk = sum(ifelse(walk < 0, 0, walk)),
135
+    bicycle = sum(ifelse(bicycle < 0, 0, bicycle)),
136
+    scholbus = sum(ifelse(scholbus < 0, 0, scholbus)),
137
+    pubbus = sum(ifelse(pubbus < 0, 0, pubbus)),
138
+    train = sum(ifelse(train < 0, 0, train)),
139
+    ferry = sum(ifelse(ferry < 0, 0, ferry)),
140
+    home = sum(ifelse(home < 0, 0, home)),
141
+    other = sum(ifelse(other < 0, 0, other)),
142
+    total = sum(ifelse(total < 0, 0, total)), .groups="drop"
143
+  ) -> edu_to
144
+
93 145
 tencols <-  c("#fb9a99", "#e31a1c", "#1f78b4", "#6a3d9a", "#b2df8a", 
94 146
               "#33a02c", "#fdbf6f", "#ff7f00", "#cab2d6", "#a6cee3")
95 147
 tencols[which.max(work_from[1, 5:14])]
@@ -108,5 +160,18 @@ work_simp$MAX <- work_simp %>% select(home:other) %>% as.matrix() %>%
108 160
     ifelse(max(x) <= 0, NA, which.max(x))
109 161
     })
110 162
 
111
-save(work_simp, work_to, work_from, tencols, file="viz/datasets.RData")
163
+edu_from$MAX <- edu_from %>% select(drive:other) %>% as.matrix() %>% 
164
+  apply(1, function(x) {
165
+    ifelse(max(x) <= 0, NA, which.max(x))
166
+    })
167
+edu_to$MAX <- edu_to %>% select(drive:other) %>% as.matrix() %>% 
168
+  apply(1, function(x) {
169
+    ifelse(max(x) <= 0, NA, which.max(x))
170
+    })
171
+edu_simp$MAX <- edu_simp %>% select(drive:other) %>% as.matrix() %>% 
172
+  apply(1, function(x) {
173
+    ifelse(max(x) <= 0, NA, which.max(x))
174
+    })
175
+
176
+save(work_simp, work_to, work_from, edu_simp, edu_to, edu_from, tencols, file="viz/datasets.RData")
112 177
 

+ 259
- 102
viz/app.R View File

@@ -17,7 +17,11 @@ sa.in.home <- shpf@data$SA22018_V1 %in% work_from$res_code
17 17
 transport.t <- c("Work at home", "Private car", "Company car", 
18 18
                 "Carpool", "Bus", "Train", "Bicycle", "Walk",
19 19
                 "Ferry", "Other", "None")
20
+edu.t <- c("Drive self", "Passenger in car", "Walk", "Bicycle",
21
+           "School bus", "Public bus", "Train", "Ferry", "Study at home",
22
+           "Other", "None")
20 23
 cols.labs <- c(transport.t[1:10], "Total")
24
+cols.edu.labs <- c(edu.t[1:10], "Total")
21 25
 
22 26
 codelist <- shpf@data %>% 
23 27
   mutate(sa2_code = as.numeric(as.character(SA22018_V1))) %>% 
@@ -29,6 +33,13 @@ startcols.res <- ifelse(is.na(startcols.res), "#808080", startcols.res)
29 33
 startcols.work <- codelist %>% left_join(work_to, by = c("sa2_code" = "work_code"))
30 34
 startcols.work <- tencols[startcols.work$MAX]
31 35
 startcols.work <- ifelse(is.na(startcols.work), "#808080", startcols.work)
36
+startcols.edures <- codelist %>% left_join(edu_from, 
37
+                                           by = c("sa2_code" = "res_code"))
38
+startcols.edures <- tencols[startcols.edures$MAX]
39
+startcols.edures <- ifelse(is.na(startcols.edures), "#808080", startcols.edures)
40
+startcols.edu <- codelist %>% left_join(edu_to, by = c("sa2_code" = "edu_code"))
41
+startcols.edu <- tencols[startcols.edu$MAX]
42
+startcols.edu <- ifelse(is.na(startcols.edu), "#808080", startcols.edu)
32 43
 
33 44
 hrstr <- "<hr style='border-top: 1px solid #000;'/>"
34 45
 
@@ -40,6 +51,10 @@ ui <- fluidPage(
40 51
   leafletOutput("map"),
41 52
   absolutePanel(top = 10, right = 10, id="mapcontrol",
42 53
                 div(
54
+                radioButtons("radioeduemp", 
55
+                             label = "Commuters (age 15+) travelling to",
56
+                             choices = c("Employment", "Education"),
57
+                             inline = TRUE),
43 58
                 radioButtons("radioinout", label="Show commuters who",
44 59
                              choiceNames = list(
45 60
                                HTML("<p>Commute <b>from</b> selected area</p>"),
@@ -107,68 +122,136 @@ server <- function(input, output) {
107 122
     selcode <- sel.SA2.code()
108 123
     selcode <- ifelse(is.na(selcode), 0, selcode)
109 124
     psel <- selcode %in% shpf@data$SA22018_V1
110
-    if (input$radiocolour == "type") {
111
-      if (input$radioinout == "work") {
112
-        fcols <- startcols.work
113
-        if (psel) {
114
-          codvs <- work_simp %>% filter(work_code == selcode)
115
-          codvs <- codelist %>% left_join(codvs, by=c("sa2_code" = "res_code"))
116
-          codvs <- tencols[codvs$MAX]
117
-          fcols <- ifelse(is.na(codvs), "#808080", codvs)
125
+    if (input$radioeduemp == "Employment") {
126
+      if (input$radiocolour == "type") {
127
+        if (input$radioinout == "work") {
128
+          fcols <- startcols.work
129
+          if (psel) {
130
+            codvs <- work_simp %>% filter(work_code == selcode)
131
+            codvs <- codelist %>% left_join(codvs, by=c("sa2_code" = "res_code"))
132
+            codvs <- tencols[codvs$MAX]
133
+            fcols <- ifelse(is.na(codvs), "#808080", codvs)
134
+          }
135
+        } else {
136
+        fcols <- startcols.res
137
+          if (psel) {
138
+            codvs <- work_simp %>% filter(res_code == selcode)
139
+            codvs <- codelist %>% left_join(codvs, by=c("sa2_code" = "work_code"))
140
+            codvs <- tencols[codvs$MAX]
141
+            fcols <- ifelse(is.na(codvs), "#808080", codvs)
142
+          }
143
+          
118 144
         }
145
+        lp <- leafletProxy("map", data = shpf) %>%
146
+          setShapeStyle(layerId = ~SA22018_V1, fillColor = fcols) %>%
147
+          clearControls() %>%
148
+          addLegend(position = "topleft",
149
+                    colors = c(tencols, "#808080"),
150
+                    labels = transport.t, opacity = 1,
151
+                    title = "Commute method"
152
+                    ) %>%
153
+          clearGroup("hpoly")
119 154
       } else {
120
-      fcols <- startcols.res
121
-        if (psel) {
122
-          codvs <- work_simp %>% filter(res_code == selcode)
123
-          codvs <- codelist %>% left_join(codvs, by=c("sa2_code" = "work_code"))
124
-          codvs <- tencols[codvs$MAX]
125
-          fcols <- ifelse(is.na(codvs), "#808080", codvs)
155
+        if (input$radioinout == "work") {
156
+          if (psel) {
157
+            codvs <- work_simp %>% filter(work_code == selcode)
158
+            codvs <- codelist %>% left_join(codvs, by=c("sa2_code" = "res_code"))
159
+            cvals <- ifelse(codvs$total == 0, NA, codvs$total)
160
+            
161
+          } else {
162
+            codvs <- codelist %>% 
163
+              left_join(work_to, by = c("sa2_code" = "work_code"))
164
+            cvals <- ifelse(codvs$total == 0, NA, codvs$total)
165
+          }
166
+        } else {
167
+          if (psel) {
168
+            codvs <- work_simp %>% filter(res_code == selcode)
169
+            codvs <- codelist %>% left_join(codvs, by=c("sa2_code" = "work_code"))
170
+            cvals <- ifelse(codvs$total == 0, NA, codvs$total)
171
+          } else {
172
+            codvs <- codelist %>% 
173
+              left_join(work_from, by = c("sa2_code" = "res_code"))
174
+            cvals <- ifelse(codvs$total == 0, NA, codvs$total)
175
+          }
126 176
         }
127
-        
177
+        cvr <- range(cvals, na.rm = TRUE)
178
+        binner <- colorBin(c("white", "red"), cvr, bins = 7, pretty = TRUE)
179
+        lp <- leafletProxy("map", data = shpf) %>%
180
+          setShapeStyle(layerId = ~SA22018_V1, fillColor = binner(cvals)) %>%
181
+          clearControls() %>%
182
+          addLegend(position = "topleft",
183
+                    pal = binner,
184
+                    values = cvals, opacity = 1,
185
+                    na.label = "None",
186
+                    title = "Number of commuters") %>%
187
+          clearGroup("hpoly")
128 188
       }
129
-      lp <- leafletProxy("map", data = shpf) %>%
130
-        setShapeStyle(layerId = ~SA22018_V1, fillColor = fcols) %>%
131
-        clearControls() %>%
132
-        addLegend(position = "topleft",
133
-                  colors = c(tencols, "#808080"),
134
-                  labels = transport.t, opacity = 1,
135
-                  title = "Commute method"
136
-                  ) %>%
137
-        clearGroup("hpoly")
138 189
     } else {
139
-      if (input$radioinout == "work") {
140
-        if (psel) {
141
-          codvs <- work_simp %>% filter(work_code == selcode)
142
-          codvs <- codelist %>% left_join(codvs, by=c("sa2_code" = "res_code"))
143
-          cvals <- ifelse(codvs$total == 0, NA, codvs$total)
144
-          
190
+      # Education code
191
+      if (input$radiocolour == "type") {
192
+        if (input$radioinout == "work") {
193
+          fcols <- startcols.edu
194
+          if (psel) {
195
+            codvs <- edu_simp %>% filter(edu_code == selcode)
196
+            codvs <- codelist %>% left_join(codvs, by=c("sa2_code" = "res_code"))
197
+            codvs <- tencols[codvs$MAX]
198
+            fcols <- ifelse(is.na(codvs), "#808080", codvs)
199
+          }
145 200
         } else {
146
-          codvs <- codelist %>% 
147
-            left_join(work_to, by = c("sa2_code" = "work_code"))
148
-          cvals <- ifelse(codvs$total == 0, NA, codvs$total)
201
+          fcols <- startcols.edures
202
+          if (psel) {
203
+            codvs <- edu_simp %>% filter(res_code == selcode)
204
+            codvs <- codelist %>% left_join(codvs, by=c("sa2_code" = "edu_code"))
205
+            codvs <- tencols[codvs$MAX]
206
+            fcols <- ifelse(is.na(codvs), "#808080", codvs)
207
+          }
208
+          
149 209
         }
210
+        lp <- leafletProxy("map", data = shpf) %>%
211
+          setShapeStyle(layerId = ~SA22018_V1, fillColor = fcols) %>%
212
+          clearControls() %>%
213
+          addLegend(position = "topleft",
214
+                    colors = c(tencols, "#808080"),
215
+                    labels = edu.t, opacity = 1,
216
+                    title = "Commute method"
217
+                    ) %>%
218
+          clearGroup("hpoly")
150 219
       } else {
151
-        if (psel) {
152
-          codvs <- work_simp %>% filter(res_code == selcode)
153
-          codvs <- codelist %>% left_join(codvs, by=c("sa2_code" = "work_code"))
154
-          cvals <- ifelse(codvs$total == 0, NA, codvs$total)
220
+        if (input$radioinout == "work") {
221
+          if (psel) {
222
+            codvs <- edu_simp %>% filter(edu_code == selcode)
223
+            codvs <- codelist %>% left_join(codvs, by=c("sa2_code" = "res_code"))
224
+            cvals <- ifelse(codvs$total == 0, NA, codvs$total)
225
+            
226
+          } else {
227
+            codvs <- codelist %>% 
228
+              left_join(edu_to, by = c("sa2_code" = "edu_code"))
229
+            cvals <- ifelse(codvs$total == 0, NA, codvs$total)
230
+          }
155 231
         } else {
156
-          codvs <- codelist %>% 
157
-            left_join(work_from, by = c("sa2_code" = "res_code"))
158
-          cvals <- ifelse(codvs$total == 0, NA, codvs$total)
232
+          if (psel) {
233
+            codvs <- edu_simp %>% filter(res_code == selcode)
234
+            codvs <- codelist %>% left_join(codvs, by=c("sa2_code" = "edu_code"))
235
+            cvals <- ifelse(codvs$total == 0, NA, codvs$total)
236
+          } else {
237
+            codvs <- codelist %>% 
238
+              left_join(edu_from, by = c("sa2_code" = "res_code"))
239
+            cvals <- ifelse(codvs$total == 0, NA, codvs$total)
240
+          }
159 241
         }
242
+        cvr <- range(cvals, na.rm = TRUE)
243
+        binner <- colorBin(c("white", "red"), cvr, bins = 7, pretty = TRUE)
244
+        lp <- leafletProxy("map", data = shpf) %>%
245
+          setShapeStyle(layerId = ~SA22018_V1, fillColor = binner(cvals)) %>%
246
+          clearControls() %>%
247
+          addLegend(position = "topleft",
248
+                    pal = binner,
249
+                    values = cvals, opacity = 1,
250
+                    na.label = "None",
251
+                    title = "Number of commuters") %>%
252
+          clearGroup("hpoly")
160 253
       }
161
-      cvr <- range(cvals, na.rm = TRUE)
162
-      binner <- colorBin(c("white", "red"), cvr, bins = 7, pretty = TRUE)
163
-      lp <- leafletProxy("map", data = shpf) %>%
164
-        setShapeStyle(layerId = ~SA22018_V1, fillColor = binner(cvals)) %>%
165
-        clearControls() %>%
166
-        addLegend(position = "topleft",
167
-                  pal = binner,
168
-                  values = cvals, opacity = 1,
169
-                  na.label = "None",
170
-                  title = "Number of commuters") %>%
171
-        clearGroup("hpoly")
254
+        
172 255
     }
173 256
     if (psel) {
174 257
       lp %>% addPolygons(group = "hpoly",
@@ -212,6 +295,9 @@ server <- function(input, output) {
212 295
       attribupdate <<- TRUE
213 296
     }
214 297
   })
298
+  observeEvent(input$radioeduemp, ignoreInit = TRUE, {
299
+    updateMap()
300
+  })
215 301
   observeEvent(input$radioinout, ignoreInit = TRUE, {
216 302
     updateMap()
217 303
   })
@@ -233,67 +319,138 @@ server <- function(input, output) {
233 319
     seled <- sel.SA2.code()
234 320
     seled <- ifelse(is.na(seled), 0, seled)
235 321
     if (!(seled %in% shpf@data$SA22018_V1)) {
236
-      HTML(paste0(hrstr, 
322
+      div(class="locinfo",
323
+        HTML(paste0(hrstr, 
237 324
                   "<p><em>No area selected</em></p>"))
325
+      )
238 326
     } else {
239 327
       namesel <- shpf@data$SA22018__1[shpf@data$SA22018_V1 == seled]
240
-      if (input$radiocolour == "type") {
241
-        str <- sprintf("<b>%s</b>", namesel)
242
-        if (input$radioinout == "work") {
243
-          str <- sprintf("<p>Commuting method of people who <b>work</b> in</p>
244
-                         <p><b><u>%s</u></b></p>", str)
245
-          vals <- as.numeric(work_to[work_to$work_code == seled, 5:15])
246
-          vals <- ifelse(is.na(vals), 0, vals)
247
-          vals <- ifelse(vals < 0, "~0", as.character(vals))
248
-          listi <- paste0(sprintf("<li>%s: %s</li>", cols.labs, 
249
-                  vals),
250
-                  collapse="")
251
-          str <- paste0(hrstr, str, "<ul>", listi, "</ul>")
328
+      if (input$radioeduemp == "Employment") {
329
+        if (input$radiocolour == "type") {
330
+          str <- sprintf("<b>%s</b>", namesel)
331
+          if (input$radioinout == "work") {
332
+            str <- sprintf("<p>Commuting method of people who <b>work</b> in</p>
333
+                           <p><b><u>%s</u></b></p>", str)
334
+            vals <- as.numeric(work_to[work_to$work_code == seled, 5:15])
335
+            vals <- ifelse(is.na(vals), 0, vals)
336
+            vals <- ifelse(vals < 0, "~0", as.character(vals))
337
+            listi <- paste0(sprintf("<li>%s: %s</li>", cols.labs, 
338
+                    vals),
339
+                    collapse="")
340
+            str <- paste0(hrstr, str, "<ul>", listi, "</ul>")
341
+          } else {
342
+            str <- sprintf("<p>Commuting method of people who <b>live</b> in</p>
343
+                           <p><u>%s</u></p>", str)
344
+            vals <- as.numeric(work_from[work_from$res_code == seled, 5:15])
345
+            vals <- ifelse(is.na(vals), 0, vals)
346
+            vals <- ifelse(vals < 0, "~0", as.character(vals))
347
+            listi <- paste0(sprintf("<li>%s: %s</li>", cols.labs, 
348
+                    vals),
349
+                    collapse="")
350
+            str <- paste0(hrstr, str, "<ul>", listi, "</ul>")
351
+          }
352
+          div(class="locinfo",
353
+              HTML(str)
354
+          )
252 355
         } else {
253
-          str <- sprintf("<p>Commuting method of people who <b>live</b> in</p>
254
-                         <p><u>%s</u></p>", str)
255
-          vals <- as.numeric(work_from[work_from$res_code == seled, 5:15])
256
-          vals <- ifelse(is.na(vals), 0, vals)
257
-          vals <- ifelse(vals < 0, "~0", as.character(vals))
258
-          listi <- paste0(sprintf("<li>%s: %s</li>", cols.labs, 
259
-                  vals),
260
-                  collapse="")
261
-          str <- paste0(hrstr, str, "<ul>", listi, "</ul>")
356
+          str <- hrstr
357
+          if (input$radioinout == "work") {
358
+            val <- as.numeric(work_to[work_to$work_code == seled, 15])
359
+            val <- ifelse(is.na(val), 0, ifelse(val < 0, 0, val))
360
+            str <- sprintf("%s<p>%d people commute <b>to</b> employment in</p>
361
+                            <p><b><u>%s</u></b></p>", str, val, namesel)
362
+            if (val > 0) {
363
+              subs <- work_simp %>% filter(work_code == seled) %>%
364
+                arrange(desc(total)) %>% head(10)
365
+              listi <- paste0(sprintf("<li>%s: %s</li>", subs$res_name, 
366
+                    subs$total),
367
+                    collapse="")
368
+              str <- sprintf("%s<p>Top areas to commute from:<p>
369
+                             <ul>%s</ul>", str, listi)
370
+            }
371
+          } else {
372
+            val <- as.numeric(work_from[work_from$res_code == seled, 15])
373
+            val <- ifelse(is.na(val), 0, ifelse(val < 0, 0, val))
374
+            str <- sprintf("%s<p>%d people commute to employment <b>from</b></p>
375
+                            <p><b><u>%s</u></b></p>", str, val, namesel)
376
+            if (val > 0) {
377
+              subs <- work_simp %>% filter(res_code == seled) %>%
378
+                arrange(desc(total)) %>% head(10)
379
+              listi <- paste0(sprintf("<li>%s: %s</li>", subs$work_name, 
380
+                    subs$total),
381
+                    collapse="")
382
+              str <- sprintf("%s<p>Top areas to commute to:<p>
383
+                             <ul>%s</ul>", str, listi)
384
+            }
385
+            
386
+          }
387
+          div(class="locinfo",
388
+              HTML(str)
389
+          )
262 390
         }
263
-        HTML(str)
264 391
       } else {
265
-        str <- hrstr
266
-        if (input$radioinout == "work") {
267
-          val <- as.numeric(work_to[work_to$work_code == seled, 15])
268
-          val <- ifelse(is.na(val), 0, ifelse(val < 0, 0, val))
269
-          str <- sprintf("%s<p>%d people commute <b>to</b></p>
270
-                          <p><b><u>%s</u></b></p>", str, val, namesel)
271
-          if (val > 0) {
272
-            subs <- work_simp %>% filter(work_code == seled) %>%
273
-              arrange(desc(total)) %>% head(10)
274
-            listi <- paste0(sprintf("<li>%s: %s</li>", subs$res_name, 
275
-                  subs$total),
276
-                  collapse="")
277
-            str <- sprintf("%s<p>Top areas to commute from<p>
278
-                           <ul>%s</ul>", str, listi)
392
+        if (input$radiocolour == "type") {
393
+          str <- sprintf("<b>%s</b>", namesel)
394
+          if (input$radioinout == "work") {
395
+            str <- sprintf("<p>Commuting method of people who<br/>go to 
396
+                           <b>education</b> in</p>
397
+                           <p><b><u>%s</u></b></p>", str)
398
+            vals <- as.numeric(edu_to[edu_to$edu_code == seled, 5:15])
399
+            vals <- ifelse(is.na(vals), 0, vals)
400
+            vals <- ifelse(vals < 0, "~0", as.character(vals))
401
+            listi <- paste0(sprintf("<li>%s: %s</li>", cols.edu.labs, 
402
+                    vals),
403
+                    collapse="")
404
+            str <- paste0(hrstr, str, "<ul>", listi, "</ul>")
405
+          } else {
406
+            str <- sprintf("<p>Commuting method to education<br/>
407
+                           of people who <b>live</b> in</p>
408
+                           <p><u>%s</u></p>", str)
409
+            vals <- as.numeric(edu_from[edu_from$res_code == seled, 5:15])
410
+            vals <- ifelse(is.na(vals), 0, vals)
411
+            vals <- ifelse(vals < 0, "~0", as.character(vals))
412
+            listi <- paste0(sprintf("<li>%s: %s</li>", cols.edu.labs, 
413
+                    vals),
414
+                    collapse="")
415
+            str <- paste0(hrstr, str, "<ul>", listi, "</ul>")
416
+            
279 417
           }
280 418
         } else {
281
-          val <- as.numeric(work_from[work_from$res_code == seled, 15])
282
-          val <- ifelse(is.na(val), 0, ifelse(val < 0, 0, val))
283
-          str <- sprintf("%s<p>%d people commute <b>from</b></p>
284
-                          <p><b><u>%s</u></b></p>", str, val, namesel)
285
-          if (val > 0) {
286
-            subs <- work_simp %>% filter(res_code == seled) %>%
287
-              arrange(desc(total)) %>% head(10)
288
-            listi <- paste0(sprintf("<li>%s: %s</li>", subs$work_name, 
289
-                  subs$total),
290
-                  collapse="")
291
-            str <- sprintf("%s<p>Top areas to commute to<p>
292
-                           <ul>%s</ul>", str, listi)
419
+          str <- hrstr
420
+          if (input$radioinout == "work") {
421
+            val <- as.numeric(edu_to[edu_to$edu_code == seled, 15])
422
+            val <- ifelse(is.na(val), 0, ifelse(val < 0, 0, val))
423
+            str <- sprintf("%s<p>%d people commute <b>to</b> education in</p>
424
+                            <p><b><u>%s</u></b></p>", str, val, namesel)
425
+            if (val > 0) {
426
+              subs <- edu_simp %>% filter(edu_code == seled) %>%
427
+                arrange(desc(total)) %>% head(10)
428
+              listi <- paste0(sprintf("<li>%s: %s</li>", subs$res_name, 
429
+                    subs$total),
430
+                    collapse="")
431
+              str <- sprintf("%s<p>Top areas to commute from:<p>
432
+                             <ul>%s</ul>", str, listi)
433
+            }
434
+          } else {
435
+            val <- as.numeric(edu_from[edu_from$res_code == seled, 15])
436
+            val <- ifelse(is.na(val), 0, ifelse(val < 0, 0, val))
437
+            str <- sprintf("%s<p>%d people commute to education <b>from</b></p>
438
+                            <p><b><u>%s</u></b></p>", str, val, namesel)
439
+            if (val > 0) {
440
+              subs <- edu_simp %>% filter(res_code == seled) %>%
441
+                arrange(desc(total)) %>% head(10)
442
+              listi <- paste0(sprintf("<li>%s: %s</li>", subs$edu_name, 
443
+                    subs$total),
444
+                    collapse="")
445
+              str <- sprintf("%s<p>Top areas to commute to:<p>
446
+                             <ul>%s</ul>", str, listi)
447
+            }
448
+              
293 449
           }
294
-          
295 450
         }
296
-        HTML(str)
451
+        div(class="locinfo",
452
+          HTML(str)
453
+        )
297 454
       }
298 455
     }
299 456
   })

+ 3
- 0
viz/extras.R View File

@@ -91,6 +91,9 @@ blockquote {
91 91
 #infobuttoncontainer label {
92 92
   font-weight: bold;
93 93
 }
94
+.locinfo {
95
+  max-width: 100%;
96
+}
94 97
 "
95 98
 
96 99
 attribhtml <- '