-
Notifications
You must be signed in to change notification settings - Fork 0
/
nyc_tree_census_2015_dash_2.Rmd
85 lines (70 loc) · 2.48 KB
/
nyc_tree_census_2015_dash_2.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
---
title: "NYC 2015 Tree Census"
output:
flexdashboard::flex_dashboard:
orientation: columns
vertical_layout: fill
---
```{r setup, include=FALSE}
# libraries
library(flexdashboard)
library(tidyverse)
library(leaflet)
library(DT)
library(plotly)
# load data
trees_2015 <- read_csv("new_york_tree_census_2015.csv")
```
Built using the the [NYC 2015 Tree Census dataset](https://data.cityofnewyork.us/Environment/2015-Street-Tree-Census-Tree-Data/uvpi-gqnh).
The entire dataset is available on the last tab and is searchable.
Column {data-width=650}
-----------------------------------------------------------------------
### 1200 Random Trees
```{r tree_map}
trees_2015 %>%
# filter(boroname == "Queens") %>%
sample_n(1200) %>%
leaflet() %>%
addTiles() %>%
addMarkers()
```
Column {.tabset}
-----------------------------------------------------------------------
### Status
```{r status}
trees_2015 %>%
count(status, sort = TRUE) %>%
mutate(status = as.factor(status)) %>% # will make this searchable by being selectable instead of having to type the status
DT::datatable(colnames = c("Status", "Number of Trees"),
filter = "top")
```
### Tree diameter distribution
```{r diameter_dist}
diameter_graph <- trees_2015 %>%
filter(tree_dbh < 120) %>% # to make the graph more interesting to look at - don't do this unless you have a good business reason
ggplot(aes(tree_dbh)) +
geom_histogram(bins = 100) + # more bins gives me more detail
labs(title = "Diameter of NYC trees, 2015",
x = "Diameter (in)",
y = "# of trees")
plotly::ggplotly(diameter_graph)
```
### Whole dataset (searchable)
```{r whole_dataset}
trees_2015 %>%
sample_n(1200) %>% # it's actually a sample of the dataset. the entire dataset is too large for datatable to handle
select(tree_id, block_id, created_at,
tree_dbh, stump_diam,
curb_loc,
status, health,
spc_latin, spc_common,
address, zipcode, boroname) %>%
mutate_if(is.character, as.factor) %>% # making character variables into factors will allow the
DT::datatable(colnames = c("Tree ID", "Block ID", "Created At",
"Tree Diameter (in)", "Stump Diameter (in)",
"Curb location",
"Status", "Health",
"Species name (Latin)", "Species Name (Common)",
"Nearest Address", "Zip Code", "Borough"),
filter = "top")
```