0

I am trying to sum my data per Meter, then average out the sumCover by Transect. My issue is that when I mean the transects, at the meter points where the cover data was taken if no native species were recorded, then that transect is effectively dropped from the dataframe after the ddply function. I have tried using the .drop function, but the issue is each site has unequal transect sampling because it was scaled to site size, so it effectively adds transects to every site. What I need to figure out to do is how to fill in within a list of numbers for missing Transect while taking into account each site varies from 3 to 16 transects - EDIT - the data preview seem to of got cut off and does not have sufficient rows so here is a file:

Here is a downloadable link of the data csv

read.csv()

require(ddply)


NativeNonnativeCoverperMeter <- ddply(RestoredGrasslandSurveys, c("Site","Transect","Locality","Meter"), summarise,
                     sumCover = sum(Cover))

NativeNonnativeCoverperTransect <- ddply(NativeNonnativeCoverperMeter, c("Site","Transect","Locality"), summarise,
                     avgCover = mean(sumCover), .drop = F)

dput(RestoredGrasslandSurveys[1:10, ])
structure(list(Site = structure(c(10L, 10L, 10L, 10L, 10L, 10L, 
10L, 10L, 10L, 10L), .Label = c("AzevedoNorth", "AzevedoSouth", 
"Big.Banana", "BlohmRanch", "CypressGrove", "Diablo.Canyon", 
"Dipsea.Moors", "Elkhorn.Nursery", "Elkhorn.Owl", "ElkhornHotwire", 
"FacultyHousing", "Glass.Beach", "Hanson.ESHA", "Hanson.Uplands", 
"Hawk.Hill", "LightHouse", "Modoc", "MooreCreek", "Morning.Sun", 
"Noyo.Headlands", "Paradise.Ridge", "Prosper.Ridge", "RussianRidge", 
"Stinson.Gulch", "Tennessee.Valley", "Watsonville.Uplands", "YoungerLagoon"
), class = "factor"), County = structure(c(4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L), .Label = c("Humboldt", "Marin", "Mendocino", 
"Monterery", "Monterey", "San.Luis.Obispo", "SanMateo", "Santa.Barbara", 
"SantaCruz", "Sonoma"), class = "factor"), Transect = c(3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), Meter = c(0L, 5L, 10L, 15L, 
20L, 25L, 30L, 35L, 40L, 45L), Lifeform = structure(c(4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("AnnualForb", "AnnualGrass", 
"Fern", "Groundcover", "Horsetail", "Nfixer", "PerennialForb", 
"PerennialGrass", "PerrenialForb", "Rush", "Sedge", "Shrub", 
"Tree"), class = "factor"), Locality = structure(c(1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("Groundcover", "Native", 
"Nonnative"), class = "factor"), Species = structure(c(265L, 
265L, 265L, 265L, 265L, 265L, 265L, 265L, 265L, 265L), .Label = c("Achillea.millefolium", 
"Acmispon.glaber", "Acmispon.maritimus", "Acmispon.parviflorus", 
"Acmispon.strigosus", "Agropyron.cristatum", "Aira.caryophyllea", 
"Aira.elegans", "Aira.praecox", "Amsinckia.menziesii", "Anaphalis.margaritacea", 
"Angelica.hendersonii", "Anthoxanthum.odoratum", "Anthriscus.caucalis", 
"Artemisia.californica", "Asclepias.fascicularis", "Atriplex.semibucatta", 
"Avena.barbata", "Avena.Barbata", "Avena.fatua", "Baccharis. pilularis", 
"Baccharis.pilularis", "Bareground", "Bellis.perennis", "Berberis.pinnata", 
"Brachypodium.distachyon", "Brassica.nigra", "Brassica.rapa", 
"Brassica.tournefortii", "Briza.maxima", "Briza.minor", "Bromus.carinatus", 
"Bromus.catharticus", "Bromus.diandrus", "Bromus.hordeaceous", 
"Bromus.madritensis", "Bromus.maritimus", "Bromus.tectorum", 
"Calamagrostis.nutkaensis", "Calandrinia.menziesii", "Calendula.arvensis", 
"Calystegia.collina", "Calystegia.purpurata", "Cardamine.oligiosperma", 
"Carduus.pycnocephalus", "carex.athrostachya", "Carex.gynodynama", 
"Carex.lasiocarpa", "Carex.Praegracilis", "Carex.spp", "Carex.suberecta", 
"Carex.tomentosa", "Carex.tumulicola", "Carpobrotus.edulis", 
"Castilleja.affinis", "Castilleja.densiflora", "Cerastium.fontanum", 
"Cerastium.glomeratum", "Chlorogalum.pomeridianum", "Cirsium.brevistylum", 
"Cirsium.vulgare", "Clarkia.purpurea", "Clarkia.spp", "Claytonia.perfoliata", 
"Clinopodium.douglasii", "Conium.maculatum", "Convolvulus.arvensis", 
"Corethrogyne.filaginifolia", "Cortaderia.jubata", "Cotula.coronopifolia", 
"Crassula.connata", "Crepis.vesicaria", "Croton.setigerus", "Cynodon.dactylon", 
"Cynosurus.echinatus", "Cyperus.eragrostis", "Danthonia.californica", 
"Daucus.pusillus", "Deschampsia.cespitosa", "Dichelostemma.capitatum", 
"Dichondra.donelliana", "Dichondra.Donelliana", "Dichondra.micrantha", 
"Distichlis.spicata", "Dudleya.cymosa", "Dudleya.farinosa", "Dysphania.ambrosioides", 
"Ehrharta.erecta", "Elymus.condensatus", "Elymus.glaucus", "Elymus.triticoides", 
"Elymus.vancouverensis", "Epilobium.brachycarpum", "Epilobium.cilatum", 
"Equisetum.arvense", "Erigeron.canadensis", "Erigeron.glaucus", 
"Erigeron.sumatrensis", "Eriogonum.latifolium", "Eriogonum.parvifolium", 
"Eriophyllum.staechadifolium", "Erodium.botrys", "Erodium.cicutarium", 
"Erodium.moscatum", "Eschscholzia.californica", "Eucalyptus.globulus", 
"Festua.muyros", "Festuca.arundinacea", "Festuca.bromioides", 
"Festuca.californica", "Festuca.idahoensis", "Festuca.microstachys", 
"Festuca.muyros", "Festuca.perennis", "Festuca.pratensis", "Festuca.rubra", 
"Foeniculum.vulgare", "Fragaria.vesca", "Frangula.californica", 
"Fritillaria.affinis", "Galium.aparine", "Galium.divaricatum", 
"Galium.porrigens", "Gamochaeta.ustulata", "Genista.monspessulana", 
"Geranium.dissectum", "Geranium.molle", "Gilia.capitata", "Gnaphalium.palustre", 
"Grindelia.latifolia", "Grindelia.stricta", "Helminthotheca.echioides", 
"Hemiparasitic.ericaceae", "Heracleum.lanatum", "Heterotheca.grandiflora", 
"Heterotheca.sessiliflora", "Hirschfieldia.incana", "Holcus.lanatus", 
"Hordeum.brachyantherum", "Hordeum.marinum", "Hordeum.murinum", 
"Horkelia.californica", "Hosackia.gracilis", "Hypochaeris.spp", 
"Iris.douglasiana", "Iris.macrosiphon", "Juncus.bufonis", "Juncus.effusus", 
"Juncus.mexicanus", "Juncus.occidentalis", "Juncus.patens", "Juncus.phaeocephalus", 
"Koeleria.macrantha", "Lactuca.serriola", "Lasthenia.californica", 
"Lathyrus.vestitus", "Leontodon.taraxacoides", "Lichen", "Linum.bienne", 
"Logfia.gallica", "Lomatium.dasycarpum", "Lomatium.utriculatum", 
"Lonicera.hispidula", "Lotus.corniculatus", "Lotus.micranthus", 
"Lupinus.arboreus", "Lupinus.bicolor", "Lupinus.littoralis", 
"Lupinus.nanus", "Lupinus.variicolor", "Luzula.comosa", "Luzula.subsessilis", 
"Lysimachia.arvensis", "Lythrum.hyssopifolia", "Madia.exigua", 
"Madia.gracilis", "Madia.madioides", "Madia.spp", "Malva.parviflora", 
"Marah.fabaceus", "Matricaria.discoides", "Medicago.polymorpha", 
"Melica.californica", "Melica.imperfecta", "Melica.torreyana", 
"Melilotus.indicus", "Melilotus.officinalis", "Modiola.caroliniana", 
"Moss", "Mulch", "Mushroom.cover", "Myosotis.discolor", "Oxalis.corniculata", 
"Oxalis.pes-caprae", "Parentucellia.latifolia", "Parentucellia.viscosa", 
"Paronychia.franciscana", "Pennisetum.clandestinum", "Perideridia.kelloggii", 
"Phacelia.californica", "Phacelia.malvifolia", "Phalaris.aquatica", 
"Pholistoma.auritum", "Plagiobothyrs.nothofulvus", "Plantago.coronopus", 
"Plantago.erecta", "Plantago.lanceolata", "Poa.annua", "Poa.pratensis", 
"Polygonum.arenastrum", "Polygonum.aviculare", "Polypodium.califomicum", 
"Polypodium.californicum", "Polypogon.monspeliensis", "Polystichum.munitum", 
"Prunella.vulgaris", "Pseudognaphalium.beneolens", "Pseudognaphalium.bioletti", 
"Pseudognaphalium.californicum", "Pseudognaphalium.canescens", 
"Pseudognaphalium.luteoalbum", "Pseudognaphalium.ramosissimum", 
"Pseudotsuga.meziesii", "Pteridium.aquilinum", "Quercus.agrifolia", 
"Ranunculus.californicus", "Ranunculus.occidentalis", "Raphanus.sativus", 
"Raphanus.spp", "Rock", "Rubus.armeniacus", "Rubus.ursinus", 
"Rumex.acetosella", "Rumex.crispus", "Rumex.Crispus", "Rumex.transitorius", 
"Salix.lasiolepis", "Sanicula.arctopoides", "Sanicula.bipinnatifida", 
"Sanicula.crassicaulis", "Scandix.peten-veneris", "Senecio.vulgare", 
"Sherardia.arvensis", "Sidalcea.malviflora", "Silene.gallica", 
"Sisyrinchium.bellum", "Solanum.americanum", "Solidago.velutina", 
"Soliva.sessilis", "Sonchus.asper", "Sonchus.oleraceus", "Spergula.arvensis", 
"Stachys.ajugoides", "Stachys.bullata", "Stellaria.media", "Stipa.cernua", 
"Stipa.lepida", "Stipa.pulchra", "Stipa.purpurata", "Symphiotrichum.chilensis", 
"Taraxia.ovata", "Tauschia.hartwegii", "Thatch.cover", "Thatch.Cover", 
"Thatch.Depth", "Thysanocarpus.laciniatus", "Toxicodendron.diversilobum", 
"Toxicoscordion.fremontii", "Tragopogon.porrifolius", "Tribulus.terrestris", 
"Trifolium.angustifolium", "Trifolium.barbigerum", "Trifolium.bifidum", 
"Trifolium.depauperatum", "Trifolium.dubium", "Trifolium.glomeratum", 
"Trifolium.hirtum", "Trifolium.hybridum", "Trifolium.macraei", 
"Trifolium.microcephalum", "Trifolium.repens", "Trifolium.subterraneum", 
"Trifolium.variegatum", "Trifolium.willdenovii", "Triphysaria.pusilla", 
"Triphysaria.versicolor", "Trisetum.canescens", "Vaccinium.ovatum", 
"Veronica.persica", "Vicia.americana", "Vicia.benghalensis", 
"Vicia.sativa", "Vicia.tetrasperma", "Vicia.villosa", "Viola.adunca", 
"Viola.pedunculata", "Wyethia.angustifolia", "Wyethia.glabra"
), class = "factor"), Cover = c(1, 1, 0.5, 0.5, 0.5, 8, 2, 2, 
5, 1)), row.names = c(NA, 10L), class = "data.frame")
Justin Luong
  • 31
  • 1
  • 11
  • Welcome to SO! Please take a moment to read about how to post R questions: https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – YOLO Feb 24 '20 at 17:34
  • In general, you'll get help **much** faster if you give a small, copy/pasteable subset of data that illustrates the problem. This makes the problem much clearer and easier to solve. It also makes your question a much better resource for the future, as the data you link to may not always be available. `dput()` is a nice easy way to share copy-pasteable data, e.g., `dput(RestoredGrasslandSurveys[1:10, ])` would give us the first 10 rows. – Gregor Thomas Feb 24 '20 at 20:52
  • @GregorThomas Thanks for the suggestion, the error doesn't really occur early on that is why I added the entire csv (which is hosted through my google drive so it shouldn't dissappear on an open folder for these specific issues), but thank you for your suggestion, I have added the `dput` for the first 10 rows. – Justin Luong Feb 25 '20 at 00:31
  • Well, yes, the *reproducible* part is key, in that it needs to help us reproduce the problem. The first thing anyone will do to debug the problem is to find a small subset where the problem occurs. If the first 10 rows don't demonstrate the problem, they are useless. Instead, you should find a small subset that demonstrates the problem. At that point, there's at least a 50% chance that you'll realize the problem and solve it yourself, but if not you can then post it here and we can help. (That's the other great reason to make small reproducible examples---they tend to make problems obvious.) – Gregor Thomas Feb 25 '20 at 14:20

0 Answers0