Hi Cathy,

I interpreted your situation a little differently than the other
responses.  Please ignore this if their suggestions solved your
problem.

I assumed you have abundance where available, but otherwise it wasn't
recorded--not as NA, just unrecorded.  You want to fill in the missing
"rows" with zeros for abundance, for each treatment, for 272 plots
within treatment, for all possible species within a plot.

(I now see from your repost that this is the case.)

R code and comments follow.

## I'll try to reproduce some of your data.  You can ignore this part
for your code.

## Say there are 5 treatments, 272 plots per treatment, and 10
## *possible* species
set.seed(1001)
your.data <- expand.grid(treatment = c("A", "B", "C", "D", "E"),
                         plot.location = 1:272,
                         species = paste("s", 1:10, sep = ""))
your.data$abundance <- rpois(nrow(your.data), 3)
your.data <- your.data[sample(nrow(your.data), size = 100), ]
row.names(your.data) <- seq(nrow(your.data))

## Your data looks something like this:
print(your.data)

## You need to generate all combinations of values of your variables

## Assuming all are currently represented somewhere in your data set,
(treatments <- unique(your.data$treatment[!is.na(your.data$treatment)]))
plot.locations <- 1:272 # or
unique(your.data$plot.location[!is.na(your.data$plot.location)]))
(species <- unique(your.data$species[!is.na(your.data$species)]))

## The complete data with all species, for all locations, for all
## treatments, present is
complete.data <- expand.grid(tx = treatments, pl = plot.locations,
                             sp = species)

## Put the two together, with NA for unrecorded abundance
your.complete.data <- merge(complete.data, your.data,
                            by.x = c("tx", "pl", "sp"),
                            by.y = c("treatment", "plot.location", "species"),
                            all.x = TRUE)

## Fill in the NAs
your.complete.data$abundance[is.na(your.complete.data$abundance)] <- 0

Hope this helps,
Mark


On Fri, May 1, 2009 at 12:20 PM, Collins, Cathy <ccoll...@ku.edu> wrote:
> Greetings,
>
> I am new to R and am hoping to get some tips from experienced R-programmers.
>
> I have a dataset that I've read into R as a dataframe. There are 5 columns: 
> Plot location,species name, a species number code (unique to each species 
> name), abundance, and treatment. There are 272 plots in each treatment, but 
> only the plots in which the species was recorded have an abundance value.  
> For all species in the dataset, I would like to add zeros to the abundance 
> column for any plots in which the species was not recorded, so that each 
> species has 272 rows.  The data are sorted by species and then abundance, so 
> all of the zeros can presumably just be tacked on to the last (272-occupied 
> plots) row for each species.
>
> My programming skills are still somewhat rudimentary (and biased toward 
> VBA-style looping...which seems to be leading me astray). Though I have 
> searched, I have not yet seen this particular problem addressed in the help 
> files.
>
> Many thanks for any suggestions,
> Cathy
>
> <mailto:ccoll...@ku.edu>
>
>
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to