There and Back Again competition entry https://shiny.petras.space/commute/
rstats
rshiny
census
competition
leaflet
javascript
stats-nz

scratch.R 6.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. library(readr)
  2. library(ggplot2)
  3. library(dplyr)
  4. library(igraph)
  5. education_travel <- read_csv("travel-education.csv")
  6. work_travel <- read_csv("travel-work.csv")
  7. length(unique(education_travel$SA2_name_usual_residence_address))
  8. length(unique(education_travel$SA2_name_educational_address))
  9. length(unique(work_travel$SA2_name_usual_residence_address))
  10. length(unique(work_travel$SA2_name_workplace_address))
  11. ggplot(work_travel, aes(x = SA2_code_usual_residence_address,
  12. y = SA2_code_workplace_address,
  13. fill = Total)) +
  14. geom_tile()
  15. g2 <- graph( edges=c(4,9, 9,6, 6, 4, 1,2, 5,6, 9,5, 1,4, 1,5, 2,6, 3,3, 6,6), n=10 )
  16. plot(g2)
  17. tg <- make_empty_graph()
  18. work_travel %>% filter(Total > 100) %>% select(SA2_name_usual_residence_address, SA2_name_workplace_address) %>%
  19. as.matrix %>% t %>% as.vector -> elist
  20. locgraph <- graph(edges = elist)
  21. # plot(locgraph, label = NA)
  22. sg <- decompose(locgraph, mode="weak")
  23. work_travel %>% select(
  24. res_code = SA2_code_usual_residence_address,
  25. res_name = SA2_name_usual_residence_address,
  26. res_east = SA2_usual_residence_easting,
  27. res_north = SA2_usual_residence_northing,
  28. work_code = SA2_code_workplace_address,
  29. work_name = SA2_name_workplace_address,
  30. work_east = SA2_workplace_easting,
  31. work_north = SA2_workplace_northing,
  32. private = Drive_a_private_car_truck_or_van,
  33. passenger = Passenger_in_a_car_truck_van_or_company_bus,
  34. walk = Walk_or_jog,
  35. bicycle = Bicycle,
  36. company = Drive_a_company_car_truck_or_van,
  37. bus = Public_bus,
  38. train = Train,
  39. ferry = Ferry,
  40. home = Work_at_home,
  41. other = Other,
  42. total = Total
  43. ) -> work_simp
  44. work_simp %>%
  45. group_by(res_code,
  46. res_name,
  47. res_east,
  48. res_north) %>%
  49. summarise(
  50. private = sum(ifelse(private < 0, 0, private)),
  51. passenger = sum(ifelse(passenger < 0, 0, passenger)),
  52. walk = sum(ifelse(walk < 0, 0, walk)),
  53. bicycle = sum(ifelse(bicycle < 0, 0, bicycle)),
  54. company = sum(ifelse(company < 0, 0, company)),
  55. bus = sum(ifelse(bus < 0, 0, bus)),
  56. train = sum(ifelse(train < 0, 0, train)),
  57. ferry = sum(ifelse(ferry < 0, 0, ferry)),
  58. home = sum(ifelse(home < 0, 0, home)),
  59. other = sum(ifelse(other < 0, 0, other)),
  60. total = sum(ifelse(total < 0, 0, total)), .groups="drop"
  61. ) -> work_from
  62. work_simp %>%
  63. group_by(work_code,
  64. work_name,
  65. work_east,
  66. work_north) %>%
  67. summarise(
  68. private = sum(ifelse(private < 0, 0, private)),
  69. passenger = sum(ifelse(passenger < 0, 0, passenger)),
  70. walk = sum(ifelse(walk < 0, 0, walk)),
  71. bicycle = sum(ifelse(bicycle < 0, 0, bicycle)),
  72. company = sum(ifelse(company < 0, 0, company)),
  73. bus = sum(ifelse(bus < 0, 0, bus)),
  74. train = sum(ifelse(train < 0, 0, train)),
  75. ferry = sum(ifelse(ferry < 0, 0, ferry)),
  76. home = sum(ifelse(home < 0, 0, home)),
  77. other = sum(ifelse(other < 0, 0, other)),
  78. total = sum(ifelse(total < 0, 0, total)), .groups="drop"
  79. ) -> work_to
  80. edu_simp <- education_travel %>% select(
  81. res_code = SA2_code_usual_residence_address,
  82. res_name = SA2_name_usual_residence_address,
  83. res_east = SA2_usual_residence_easting,
  84. res_north = SA2_usual_residence_northing,
  85. edu_code = SA2_code_educational_address,
  86. edu_name = SA2_name_educational_address,
  87. edu_east = SA2_educational_easting,
  88. edu_north = SA2_educational_northing,
  89. drive = Drive_a_car_truck_or_van,
  90. passenger = Passenger_in_a_car_truck_or_van,
  91. walk = Walk_or_jog,
  92. bicycle = Bicycle,
  93. scholbus = School_bus,
  94. pubbus = Public_bus,
  95. train = Train,
  96. ferry = Ferry,
  97. home = Study_at_home,
  98. other = Other,
  99. total = Total
  100. )
  101. edu_simp %>% group_by(res_code, res_name, res_east, res_north) %>%
  102. summarise(
  103. drive = sum(ifelse(drive < 0, 0, drive)),
  104. passenger = sum(ifelse(passenger < 0, 0, passenger)),
  105. walk = sum(ifelse(walk < 0, 0, walk)),
  106. bicycle = sum(ifelse(bicycle < 0, 0, bicycle)),
  107. scholbus = sum(ifelse(scholbus < 0, 0, scholbus)),
  108. pubbus = sum(ifelse(pubbus < 0, 0, pubbus)),
  109. train = sum(ifelse(train < 0, 0, train)),
  110. ferry = sum(ifelse(ferry < 0, 0, ferry)),
  111. home = sum(ifelse(home < 0, 0, home)),
  112. other = sum(ifelse(other < 0, 0, other)),
  113. total = sum(ifelse(total < 0, 0, total)), .groups="drop"
  114. ) -> edu_from
  115. edu_simp %>% group_by(edu_code, edu_name, edu_east, edu_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_to
  129. tencols <- c("#f85654", "#e31a1c", "#1f78b4", "#6a3d9a", "#b2df8a",
  130. "#33a02c", "#fdbf6f", "#ff7f00", "#af8ac1", "#cab2d6")
  131. tencols[which.max(work_from[1, 5:14])]
  132. work_from$MAX <- work_from %>% select(private:other) %>% as.matrix() %>%
  133. apply(1, function(x) {
  134. ifelse(max(x) <= 0, NA, which.max(x))
  135. })
  136. work_to$MAX <- work_to %>% select(private:other) %>% as.matrix() %>%
  137. apply(1, function(x) {
  138. ifelse(max(x) <= 0, NA, which.max(x))
  139. })
  140. work_simp$MAX <- work_simp %>% select(private:other) %>% as.matrix() %>%
  141. apply(1, function(x) {
  142. ifelse(max(x) <= 0, NA, which.max(x))
  143. })
  144. edu_from$MAX <- edu_from %>% select(drive:other) %>% as.matrix() %>%
  145. apply(1, function(x) {
  146. ifelse(max(x) <= 0, NA, which.max(x))
  147. })
  148. edu_to$MAX <- edu_to %>% select(drive:other) %>% as.matrix() %>%
  149. apply(1, function(x) {
  150. ifelse(max(x) <= 0, NA, which.max(x))
  151. })
  152. edu_simp$MAX <- edu_simp %>% select(drive:other) %>% as.matrix() %>%
  153. apply(1, function(x) {
  154. ifelse(max(x) <= 0, NA, which.max(x))
  155. })
  156. save(work_simp, work_to, work_from, edu_simp, edu_to, edu_from, tencols, file="viz/datasets.RData")