I used the 2015 Street Tree Census Data from NYC Open Data. This data includes tree species, diameter, and perception of tree health.
library(readr)
tree_data <- read.csv("2015_Street_Tree_Census_-_Tree_Data.csv")
summary(tree_data)
## tree_id block_id created_at tree_dbh
## Min. : 3 Min. :100002 Length :683788 Min. : 0.00
## 1st Qu.:186583 1st Qu.:221556 N.unique : 483 1st Qu.: 4.00
## Median :366214 Median :319967 N.blank : 0 Median : 9.00
## Mean :365205 Mean :313793 Min.nchar: 10 Mean : 11.28
## 3rd Qu.:546170 3rd Qu.:404624 Max.nchar: 10 3rd Qu.: 16.00
## Max. :722694 Max. :999999 Max. :450.00
##
## stump_diam curb_loc status health
## Min. : 0.0000 Length :683788 Length :683788 Length :683788
## 1st Qu.: 0.0000 N.unique : 2 N.unique : 3 N.unique : 4
## Median : 0.0000 N.blank : 0 N.blank : 0 N.blank : 31616
## Mean : 0.4325 Min.nchar: 6 Min.nchar: 4 Min.nchar: 0
## 3rd Qu.: 0.0000 Max.nchar: 14 Max.nchar: 5 Max.nchar: 4
## Max. :140.0000
##
## spc_latin spc_common steward guards
## Length :683788 Length :683788 Length :683788 Length :683788
## N.unique : 133 N.unique : 133 N.unique : 5 N.unique : 5
## N.blank : 31619 N.blank : 31619 N.blank : 31615 N.blank : 31616
## Min.nchar: 0 Min.nchar: 0 Min.nchar: 0 Min.nchar: 0
## Max.nchar: 34 Max.nchar: 22 Max.nchar: 7 Max.nchar: 7
##
##
## sidewalk user_type problems root_stone
## Length :683788 Length :683788 Length :683788 Length :683788
## N.unique : 3 N.unique : 3 N.unique : 233 N.unique : 2
## N.blank : 31616 N.blank : 0 N.blank : 31664 N.blank : 0
## Min.nchar: 0 Min.nchar: 9 Min.nchar: 0 Min.nchar: 2
## Max.nchar: 8 Max.nchar: 16 Max.nchar: 95 Max.nchar: 3
##
##
## root_grate root_other trunk_wire trnk_light
## Length :683788 Length :683788 Length :683788 Length :683788
## N.unique : 2 N.unique : 2 N.unique : 2 N.unique : 2
## N.blank : 0 N.blank : 0 N.blank : 0 N.blank : 0
## Min.nchar: 2 Min.nchar: 2 Min.nchar: 2 Min.nchar: 2
## Max.nchar: 3 Max.nchar: 3 Max.nchar: 3 Max.nchar: 3
##
##
## trnk_other brch_light brch_shoe brch_other
## Length :683788 Length :683788 Length :683788 Length :683788
## N.unique : 2 N.unique : 2 N.unique : 2 N.unique : 2
## N.blank : 0 N.blank : 0 N.blank : 0 N.blank : 0
## Min.nchar: 2 Min.nchar: 2 Min.nchar: 2 Min.nchar: 2
## Max.nchar: 3 Max.nchar: 3 Max.nchar: 3 Max.nchar: 3
##
##
## address postcode zip_city community.board
## Length :683788 Min. : 83 Length :683788 Min. :101.0
## N.unique :408701 1st Qu.:10451 N.unique : 48 1st Qu.:302.0
## N.blank : 0 Median :11214 N.blank : 0 Median :402.0
## Min.nchar: 1 Mean :10916 Min.nchar: 5 Mean :343.5
## Max.nchar: 40 3rd Qu.:11365 Max.nchar: 19 3rd Qu.:412.0
## Max. :11697 Max. :503.0
##
## borocode borough cncldist st_assem
## Min. :1.000 Length :683788 Min. : 1.00 Min. :23.00
## 1st Qu.:3.000 N.unique : 5 1st Qu.:19.00 1st Qu.:33.00
## Median :4.000 N.blank : 0 Median :30.00 Median :52.00
## Mean :3.358 Min.nchar: 5 Mean :29.94 Mean :50.79
## 3rd Qu.:4.000 Max.nchar: 13 3rd Qu.:43.00 3rd Qu.:64.00
## Max. :5.000 Max. :51.00 Max. :87.00
##
## st_senate nta nta_name boro_ct
## Min. :10.00 Length :683788 Length :683788 Length :683788
## 1st Qu.:14.00 N.unique : 188 N.unique : 188 N.unique : 2152
## Median :21.00 N.blank : 0 N.blank : 0 N.blank : 0
## Mean :20.62 Min.nchar: 4 Min.nchar: 6 Min.nchar: 9
## 3rd Qu.:25.00 Max.nchar: 4 Max.nchar: 56 Max.nchar: 9
## Max. :36.00
##
## state latitude longitude x_sp
## Length :683788 Min. :40.50 Min. :-74.25 Length :683788
## N.unique : 1 1st Qu.:40.63 1st Qu.:-73.98 N.unique :681630
## N.blank : 0 Median :40.70 Median :-73.91 N.blank : 0
## Min.nchar: 8 Mean :40.70 Mean :-73.92 Min.nchar: 7
## Max.nchar: 8 3rd Qu.:40.76 3rd Qu.:-73.83 Max.nchar: 13
## Max. :40.91 Max. :-73.70
##
## y_sp council.district census.tract bin
## Length :683788 Min. : 1.00 Length :683788 Min. :1000000
## N.unique :682632 1st Qu.:19.00 N.unique : 1316 1st Qu.:3031991
## N.blank : 0 Median :30.00 N.blank : 6519 Median :4020352
## Min.nchar: 7 Mean :30.03 Min.nchar: 0 Mean :3495439
## Max.nchar: 12 3rd Qu.:43.00 Max.nchar: 7 3rd Qu.:4263123
## Max. :51.00 Max. :5515124
## NAs :6519 NAs :9559
## bbl
## Min. :0.000e+00
## 1st Qu.:3.011e+09
## Median :4.009e+09
## Mean :3.413e+09
## 3rd Qu.:4.106e+09
## Max. :5.081e+09
## NAs :9559
#Counting the number of rows and columns
dim(tree_data)
## [1] 683788 45
#Finding the column names
names(tree_data)
## [1] "tree_id" "block_id" "created_at" "tree_dbh"
## [5] "stump_diam" "curb_loc" "status" "health"
## [9] "spc_latin" "spc_common" "steward" "guards"
## [13] "sidewalk" "user_type" "problems" "root_stone"
## [17] "root_grate" "root_other" "trunk_wire" "trnk_light"
## [21] "trnk_other" "brch_light" "brch_shoe" "brch_other"
## [25] "address" "postcode" "zip_city" "community.board"
## [29] "borocode" "borough" "cncldist" "st_assem"
## [33] "st_senate" "nta" "nta_name" "boro_ct"
## [37] "state" "latitude" "longitude" "x_sp"
## [41] "y_sp" "council.district" "census.tract" "bin"
## [45] "bbl"
tree_data$tree_dbh <- as.numeric(tree_data$tree_dbh)
mean(tree_data$tree_dbh, na.rm = TRUE)
## [1] 11.27979
median(tree_data$tree_dbh, na.rm = TRUE)
## [1] 9
mean(tree_data$tree_dbh, na.rm = TRUE)
## [1] 11.27979
sort(table(tree_data$borough), decreasing = TRUE)
##
## Queens Brooklyn Staten Island Bronx Manhattan
## 250551 177293 105318 85203 65423
#The data finds that Queens has the most trees, then Boroklyn, Staten Island, Bronx, then Manhattan with the fewest.
borough_counts <- sort(table(tree_data$borough), decreasing = TRUE)
barplot(borough_counts,
main = "Amount of Trees by Borough",
ylab = "Number of trees",
col = "#2a78d6")
species <- sort(table(tree_data$spc_common), decreasing = TRUE)
top10 <- species[1:10]
pie(top10,
labels = names(top10),
main = "Top 10 Tree Species")