require(dplyr)
plants <- read.csv('C:/Users/tuh09869/Google Drive/Megalopolis Ecology/data/PWD_plant_list_surveys_soft_sites.csv')
plants$binomial <- paste(plants$Genus, plants$Species, sep=' ')
approvedHerb <- read.csv('C:/Users/tuh09869/Google Drive/Megalopolis Ecology/data/GSI_Landscape_Guidebook_Plant_list_herbaceous.csv')
approvedTree <- read.csv('C:/Users/tuh09869/Google Drive/Megalopolis Ecology/data/GSI_Landscape_Guidebook_Plant_list_treesecsv.csv')
approvedHerb$binomial <- paste(approvedHerb$Genus, approvedHerb$Species, sep=' ')
approvedTree$binomial <- paste(approvedTree$Genus, approvedTree$Species, sep=' ')
approvedSpecies <- unique(c(approvedHerb$binomial, approvedTree$binomial))
addresses <- read.csv('C:/Users/tuh09869/Google Drive/Megalopolis Ecology/data/PWD SMP Addresses.csv')
plants <- left_join(plants, addresses, by='SMP.ID')
plants2 <- plants[! is.na(plants$SMP.Type),]

Overall, plants most used

plantFreq <- table(plants$binomial)
plantFreq <- as.data.frame(plantFreq)
plantFreq <- plantFreq[order(plantFreq$Freq),]
temporaryPlant <- plantFreq[plantFreq$Freq > 10,]
temporaryPlant2 <- data.frame(freq=temporaryPlant$Freq)
rownames(temporaryPlant2) <- temporaryPlant$Var1
par(mar=c(5.1,12,4.1,2.1))
barplot(t(as.matrix(temporaryPlant2)), beside=TRUE, horiz=T, las=1)

length(unique(plants$binomial)) # how many species in survey data
[1] 297
length(approvedSpecies) # how many species in 'approved' spreadsheet
[1] 626

By SMP type

rainGarden <- plants2[plants2$SMP.Type=='Rain Garden',]
length(unique(rainGarden$SMP.ID)) # number of rain gardens in survey data
[1] 65
plantFreq <- table(rainGarden$binomial)
plantFreq <- as.data.frame(plantFreq)
plantFreq <- plantFreq[order(plantFreq$Freq),]
temporaryPlant <- plantFreq[plantFreq$Freq > 10,]
temporaryPlant2 <- data.frame(freq=temporaryPlant$Freq)
rownames(temporaryPlant2) <- temporaryPlant$Var1
par(mar=c(5.1,12,4.1,2.1))
barplot(t(as.matrix(temporaryPlant2)), beside=TRUE, horiz=T, las=1)
planter <- plants2[plants2$SMP.Type=='Planter',]
length(unique(planter$SMP.ID)) # number of planters in survey data
[1] 48
plantFreq <- table(planter$binomial)
plantFreq <- as.data.frame(plantFreq)
plantFreq <- plantFreq[order(plantFreq$Freq),]
temporaryPlant <- plantFreq[plantFreq$Freq > 10,]
temporaryPlant2 <- data.frame(freq=temporaryPlant$Freq)
rownames(temporaryPlant2) <- temporaryPlant$Var1
par(mar=c(5.1,12,4.1,2.1))

barplot(t(as.matrix(temporaryPlant2)), beside=TRUE, horiz=T, las=1)
bumpout <- plants2[plants2$SMP.Type=='Bumpout',]
length(unique(bumpout$SMP.ID)) # number of bumpouts in survey data
[1] 22
plantFreq <- table(bumpout$binomial)
plantFreq <- as.data.frame(plantFreq)
plantFreq <- plantFreq[order(plantFreq$Freq),]
temporaryPlant <- plantFreq[plantFreq$Freq > 10,]
temporaryPlant2 <- data.frame(freq=temporaryPlant$Freq)
rownames(temporaryPlant2) <- temporaryPlant$Var1
par(mar=c(5.1,12,4.1,2.1))

barplot(t(as.matrix(temporaryPlant2)), beside=TRUE, horiz=T, las=1)
swale <- plants2[plants2$SMP.Type=='Swale',]
length(unique(swale$SMP.ID)) # number of swales in survey data
[1] 3
plantFreq <- table(swale$binomial)
plantFreq <- as.data.frame(plantFreq)
plantFreq <- plantFreq[order(plantFreq$Freq),]
# temporaryPlant <- plantFreq[plantFreq$Freq > 10,]
temporaryPlant <- plantFreq
temporaryPlant2 <- data.frame(freq=temporaryPlant$Freq)
rownames(temporaryPlant2) <- temporaryPlant$Var1
par(mar=c(5.1,12,4.1,2.1))

barplot(t(as.matrix(temporaryPlant2)), beside=TRUE, horiz=T, las=1)
basin <- plants2[plants2$SMP.Type=='Basin',]
length(unique(basin$SMP.ID)) # number of basins in survey data
[1] 1
plantFreq <- table(basin$binomial)
plantFreq <- as.data.frame(plantFreq)
plantFreq <- plantFreq[order(plantFreq$Freq),]
# temporaryPlant <- plantFreq[plantFreq$Freq > 10,]
temporaryPlant <- plantFreq
temporaryPlant2 <- data.frame(freq=temporaryPlant$Freq)
rownames(temporaryPlant2) <- temporaryPlant$Var1
par(mar=c(5.1,12,4.1,2.1))

barplot(t(as.matrix(temporaryPlant2)), beside=TRUE, horiz=T, las=1)

# Also data for green roofs?

SR by SMP

siteSR <- table(plants$SMP.ID)
siteSR <- as.data.frame(siteSR)
siteSR <- siteSR[order(siteSR$Freq),]
barplot(siteSR$Freq)

Tree trench and stormwater tree surveys

trees <- read.csv('C:/Users/tuh09869/Google Drive/Megalopolis Ecology/data/PWD_plant_list_surveys_tree_trenches.csv')
treeFreq <- table(trees$SPECIES)
treeFreq <- as.data.frame(treeFreq)
treeFreq <- treeFreq[order(treeFreq$Freq),]
temporaryPlant <- treeFreq[treeFreq$Freq > 10,]
temporaryPlant <- temporaryPlant[temporaryPlant$Freq < 100,]
temporaryPlant2 <- data.frame(freq=temporaryPlant$Freq)
rownames(temporaryPlant2) <- temporaryPlant$Var1
par(mar=c(5.1,12,4.1,2.1))
barplot(t(as.matrix(temporaryPlant2)), beside=TRUE, horiz=T, las=1)

LS0tDQp0aXRsZTogIlBsYW50IHN1cnZleSBleHBsb3JhdGlvbiINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCmBgYHtyLCByZXN1bHRzPSdoaWRlJ30NCnJlcXVpcmUoZHBseXIpDQpgYGANCg0KDQoNCg0KYGBge3IsIHJlc3VsdHM9J2hpZGUnfQ0KcGxhbnRzIDwtIHJlYWQuY3N2KCdDOi9Vc2Vycy90dWgwOTg2OS9Hb29nbGUgRHJpdmUvTWVnYWxvcG9saXMgRWNvbG9neS9kYXRhL1BXRF9wbGFudF9saXN0X3N1cnZleXNfc29mdF9zaXRlcy5jc3YnKQ0KcGxhbnRzJGJpbm9taWFsIDwtIHBhc3RlKHBsYW50cyRHZW51cywgcGxhbnRzJFNwZWNpZXMsIHNlcD0nICcpDQphcHByb3ZlZEhlcmIgPC0gcmVhZC5jc3YoJ0M6L1VzZXJzL3R1aDA5ODY5L0dvb2dsZSBEcml2ZS9NZWdhbG9wb2xpcyBFY29sb2d5L2RhdGEvR1NJX0xhbmRzY2FwZV9HdWlkZWJvb2tfUGxhbnRfbGlzdF9oZXJiYWNlb3VzLmNzdicpDQphcHByb3ZlZFRyZWUgPC0gcmVhZC5jc3YoJ0M6L1VzZXJzL3R1aDA5ODY5L0dvb2dsZSBEcml2ZS9NZWdhbG9wb2xpcyBFY29sb2d5L2RhdGEvR1NJX0xhbmRzY2FwZV9HdWlkZWJvb2tfUGxhbnRfbGlzdF90cmVlc2Vjc3YuY3N2JykNCmFwcHJvdmVkSGVyYiRiaW5vbWlhbCA8LSBwYXN0ZShhcHByb3ZlZEhlcmIkR2VudXMsIGFwcHJvdmVkSGVyYiRTcGVjaWVzLCBzZXA9JyAnKQ0KYXBwcm92ZWRUcmVlJGJpbm9taWFsIDwtIHBhc3RlKGFwcHJvdmVkVHJlZSRHZW51cywgYXBwcm92ZWRUcmVlJFNwZWNpZXMsIHNlcD0nICcpDQphcHByb3ZlZFNwZWNpZXMgPC0gdW5pcXVlKGMoYXBwcm92ZWRIZXJiJGJpbm9taWFsLCBhcHByb3ZlZFRyZWUkYmlub21pYWwpKQ0KDQphZGRyZXNzZXMgPC0gcmVhZC5jc3YoJ0M6L1VzZXJzL3R1aDA5ODY5L0dvb2dsZSBEcml2ZS9NZWdhbG9wb2xpcyBFY29sb2d5L2RhdGEvUFdEIFNNUCBBZGRyZXNzZXMuY3N2JykNCnBsYW50cyA8LSBsZWZ0X2pvaW4ocGxhbnRzLCBhZGRyZXNzZXMsIGJ5PSdTTVAuSUQnKQ0KDQpwbGFudHMyIDwtIHBsYW50c1shIGlzLm5hKHBsYW50cyRTTVAuVHlwZSksXQ0KYGBgDQoNCg0KIyMjIE92ZXJhbGwsIHBsYW50cyBtb3N0IHVzZWQNCmBgYHtyfQ0KcGxhbnRGcmVxIDwtIHRhYmxlKHBsYW50cyRiaW5vbWlhbCkNCnBsYW50RnJlcSA8LSBhcy5kYXRhLmZyYW1lKHBsYW50RnJlcSkNCnBsYW50RnJlcSA8LSBwbGFudEZyZXFbb3JkZXIocGxhbnRGcmVxJEZyZXEpLF0NCnRlbXBvcmFyeVBsYW50IDwtIHBsYW50RnJlcVtwbGFudEZyZXEkRnJlcSA+IDEwLF0NCnRlbXBvcmFyeVBsYW50MiA8LSBkYXRhLmZyYW1lKGZyZXE9dGVtcG9yYXJ5UGxhbnQkRnJlcSkNCnJvd25hbWVzKHRlbXBvcmFyeVBsYW50MikgPC0gdGVtcG9yYXJ5UGxhbnQkVmFyMQ0KcGFyKG1hcj1jKDUuMSwxMiw0LjEsMi4xKSkNCmJhcnBsb3QodChhcy5tYXRyaXgodGVtcG9yYXJ5UGxhbnQyKSksIGJlc2lkZT1UUlVFLCBob3Jpej1ULCBsYXM9MSkNCmxlbmd0aCh1bmlxdWUocGxhbnRzJGJpbm9taWFsKSkgIyBob3cgbWFueSBzcGVjaWVzIGluIHN1cnZleSBkYXRhDQpsZW5ndGgoYXBwcm92ZWRTcGVjaWVzKSAjIGhvdyBtYW55IHNwZWNpZXMgaW4gJ2FwcHJvdmVkJyBzcHJlYWRzaGVldA0KYGBgDQoNCg0KDQojIyMgQnkgU01QIHR5cGUNCmBgYHtyfQ0KcmFpbkdhcmRlbiA8LSBwbGFudHMyW3BsYW50czIkU01QLlR5cGU9PSdSYWluIEdhcmRlbicsXQ0KbGVuZ3RoKHVuaXF1ZShyYWluR2FyZGVuJFNNUC5JRCkpICMgbnVtYmVyIG9mIHJhaW4gZ2FyZGVucyBpbiBzdXJ2ZXkgZGF0YQ0KcGxhbnRGcmVxIDwtIHRhYmxlKHJhaW5HYXJkZW4kYmlub21pYWwpDQpwbGFudEZyZXEgPC0gYXMuZGF0YS5mcmFtZShwbGFudEZyZXEpDQpwbGFudEZyZXEgPC0gcGxhbnRGcmVxW29yZGVyKHBsYW50RnJlcSRGcmVxKSxdDQp0ZW1wb3JhcnlQbGFudCA8LSBwbGFudEZyZXFbcGxhbnRGcmVxJEZyZXEgPiAxMCxdDQp0ZW1wb3JhcnlQbGFudDIgPC0gZGF0YS5mcmFtZShmcmVxPXRlbXBvcmFyeVBsYW50JEZyZXEpDQpyb3duYW1lcyh0ZW1wb3JhcnlQbGFudDIpIDwtIHRlbXBvcmFyeVBsYW50JFZhcjENCnBhcihtYXI9Yyg1LjEsMTIsNC4xLDIuMSkpDQpiYXJwbG90KHQoYXMubWF0cml4KHRlbXBvcmFyeVBsYW50MikpLCBiZXNpZGU9VFJVRSwgaG9yaXo9VCwgbGFzPTEpDQoNCnBsYW50ZXIgPC0gcGxhbnRzMltwbGFudHMyJFNNUC5UeXBlPT0nUGxhbnRlcicsXQ0KbGVuZ3RoKHVuaXF1ZShwbGFudGVyJFNNUC5JRCkpICMgbnVtYmVyIG9mIHBsYW50ZXJzIGluIHN1cnZleSBkYXRhDQpwbGFudEZyZXEgPC0gdGFibGUocGxhbnRlciRiaW5vbWlhbCkNCnBsYW50RnJlcSA8LSBhcy5kYXRhLmZyYW1lKHBsYW50RnJlcSkNCnBsYW50RnJlcSA8LSBwbGFudEZyZXFbb3JkZXIocGxhbnRGcmVxJEZyZXEpLF0NCnRlbXBvcmFyeVBsYW50IDwtIHBsYW50RnJlcVtwbGFudEZyZXEkRnJlcSA+IDEwLF0NCnRlbXBvcmFyeVBsYW50MiA8LSBkYXRhLmZyYW1lKGZyZXE9dGVtcG9yYXJ5UGxhbnQkRnJlcSkNCnJvd25hbWVzKHRlbXBvcmFyeVBsYW50MikgPC0gdGVtcG9yYXJ5UGxhbnQkVmFyMQ0KcGFyKG1hcj1jKDUuMSwxMiw0LjEsMi4xKSkNCmJhcnBsb3QodChhcy5tYXRyaXgodGVtcG9yYXJ5UGxhbnQyKSksIGJlc2lkZT1UUlVFLCBob3Jpej1ULCBsYXM9MSkNCg0KYnVtcG91dCA8LSBwbGFudHMyW3BsYW50czIkU01QLlR5cGU9PSdCdW1wb3V0JyxdDQpsZW5ndGgodW5pcXVlKGJ1bXBvdXQkU01QLklEKSkgIyBudW1iZXIgb2YgYnVtcG91dHMgaW4gc3VydmV5IGRhdGENCnBsYW50RnJlcSA8LSB0YWJsZShidW1wb3V0JGJpbm9taWFsKQ0KcGxhbnRGcmVxIDwtIGFzLmRhdGEuZnJhbWUocGxhbnRGcmVxKQ0KcGxhbnRGcmVxIDwtIHBsYW50RnJlcVtvcmRlcihwbGFudEZyZXEkRnJlcSksXQ0KdGVtcG9yYXJ5UGxhbnQgPC0gcGxhbnRGcmVxW3BsYW50RnJlcSRGcmVxID4gMTAsXQ0KdGVtcG9yYXJ5UGxhbnQyIDwtIGRhdGEuZnJhbWUoZnJlcT10ZW1wb3JhcnlQbGFudCRGcmVxKQ0Kcm93bmFtZXModGVtcG9yYXJ5UGxhbnQyKSA8LSB0ZW1wb3JhcnlQbGFudCRWYXIxDQpwYXIobWFyPWMoNS4xLDEyLDQuMSwyLjEpKQ0KYmFycGxvdCh0KGFzLm1hdHJpeCh0ZW1wb3JhcnlQbGFudDIpKSwgYmVzaWRlPVRSVUUsIGhvcml6PVQsIGxhcz0xKQ0KDQpzd2FsZSA8LSBwbGFudHMyW3BsYW50czIkU01QLlR5cGU9PSdTd2FsZScsXQ0KbGVuZ3RoKHVuaXF1ZShzd2FsZSRTTVAuSUQpKSAjIG51bWJlciBvZiBzd2FsZXMgaW4gc3VydmV5IGRhdGENCnBsYW50RnJlcSA8LSB0YWJsZShzd2FsZSRiaW5vbWlhbCkNCnBsYW50RnJlcSA8LSBhcy5kYXRhLmZyYW1lKHBsYW50RnJlcSkNCnBsYW50RnJlcSA8LSBwbGFudEZyZXFbb3JkZXIocGxhbnRGcmVxJEZyZXEpLF0NCiMgdGVtcG9yYXJ5UGxhbnQgPC0gcGxhbnRGcmVxW3BsYW50RnJlcSRGcmVxID4gMTAsXQ0KdGVtcG9yYXJ5UGxhbnQgPC0gcGxhbnRGcmVxDQp0ZW1wb3JhcnlQbGFudDIgPC0gZGF0YS5mcmFtZShmcmVxPXRlbXBvcmFyeVBsYW50JEZyZXEpDQpyb3duYW1lcyh0ZW1wb3JhcnlQbGFudDIpIDwtIHRlbXBvcmFyeVBsYW50JFZhcjENCnBhcihtYXI9Yyg1LjEsMTIsNC4xLDIuMSkpDQpiYXJwbG90KHQoYXMubWF0cml4KHRlbXBvcmFyeVBsYW50MikpLCBiZXNpZGU9VFJVRSwgaG9yaXo9VCwgbGFzPTEpDQoNCmJhc2luIDwtIHBsYW50czJbcGxhbnRzMiRTTVAuVHlwZT09J0Jhc2luJyxdDQpsZW5ndGgodW5pcXVlKGJhc2luJFNNUC5JRCkpICMgbnVtYmVyIG9mIGJhc2lucyBpbiBzdXJ2ZXkgZGF0YQ0KcGxhbnRGcmVxIDwtIHRhYmxlKGJhc2luJGJpbm9taWFsKQ0KcGxhbnRGcmVxIDwtIGFzLmRhdGEuZnJhbWUocGxhbnRGcmVxKQ0KcGxhbnRGcmVxIDwtIHBsYW50RnJlcVtvcmRlcihwbGFudEZyZXEkRnJlcSksXQ0KIyB0ZW1wb3JhcnlQbGFudCA8LSBwbGFudEZyZXFbcGxhbnRGcmVxJEZyZXEgPiAxMCxdDQp0ZW1wb3JhcnlQbGFudCA8LSBwbGFudEZyZXENCnRlbXBvcmFyeVBsYW50MiA8LSBkYXRhLmZyYW1lKGZyZXE9dGVtcG9yYXJ5UGxhbnQkRnJlcSkNCnJvd25hbWVzKHRlbXBvcmFyeVBsYW50MikgPC0gdGVtcG9yYXJ5UGxhbnQkVmFyMQ0KcGFyKG1hcj1jKDUuMSwxMiw0LjEsMi4xKSkNCmJhcnBsb3QodChhcy5tYXRyaXgodGVtcG9yYXJ5UGxhbnQyKSksIGJlc2lkZT1UUlVFLCBob3Jpej1ULCBsYXM9MSkNCg0KIyBBbHNvIGRhdGEgZm9yIGdyZWVuIHJvb2ZzPw0KDQpgYGANCg0KIyMjIFNSIGJ5IFNNUA0KYGBge3J9DQpzaXRlU1IgPC0gdGFibGUocGxhbnRzJFNNUC5JRCkNCnNpdGVTUiA8LSBhcy5kYXRhLmZyYW1lKHNpdGVTUikNCnNpdGVTUiA8LSBzaXRlU1Jbb3JkZXIoc2l0ZVNSJEZyZXEpLF0NCmJhcnBsb3Qoc2l0ZVNSJEZyZXEpDQpgYGANCg0KIyMjIFRyZWUgdHJlbmNoIGFuZCBzdG9ybXdhdGVyIHRyZWUgc3VydmV5cw0KYGBge3J9DQp0cmVlcyA8LSByZWFkLmNzdignQzovVXNlcnMvdHVoMDk4NjkvR29vZ2xlIERyaXZlL01lZ2Fsb3BvbGlzIEVjb2xvZ3kvZGF0YS9QV0RfcGxhbnRfbGlzdF9zdXJ2ZXlzX3RyZWVfdHJlbmNoZXMuY3N2JykNCnRyZWVGcmVxIDwtIHRhYmxlKHRyZWVzJFNQRUNJRVMpDQp0cmVlRnJlcSA8LSBhcy5kYXRhLmZyYW1lKHRyZWVGcmVxKQ0KdHJlZUZyZXEgPC0gdHJlZUZyZXFbb3JkZXIodHJlZUZyZXEkRnJlcSksXQ0KdGVtcG9yYXJ5UGxhbnQgPC0gdHJlZUZyZXFbdHJlZUZyZXEkRnJlcSA+IDEwLF0NCnRlbXBvcmFyeVBsYW50IDwtIHRlbXBvcmFyeVBsYW50W3RlbXBvcmFyeVBsYW50JEZyZXEgPCAxMDAsXQ0KdGVtcG9yYXJ5UGxhbnQyIDwtIGRhdGEuZnJhbWUoZnJlcT10ZW1wb3JhcnlQbGFudCRGcmVxKQ0Kcm93bmFtZXModGVtcG9yYXJ5UGxhbnQyKSA8LSB0ZW1wb3JhcnlQbGFudCRWYXIxDQpwYXIobWFyPWMoNS4xLDEyLDQuMSwyLjEpKQ0KYmFycGxvdCh0KGFzLm1hdHJpeCh0ZW1wb3JhcnlQbGFudDIpKSwgYmVzaWRlPVRSVUUsIGhvcml6PVQsIGxhcz0xKQ0KYGBgDQo=