[R-sig-eco] problem using reshape package

Peter Solymos solymos at ualberta.ca
Thu Jul 9 17:24:40 CEST 2009


Hi,

something like this might help:

## your toy data set
d <- data.frame(SITE=rep(c("I","II"), each=3),
    SPECIES=rep(LETTERS[1:3], 2),
    Replicate1=c(1,2,1,4,1,6),
    Replicate2=c(3,5,0,2,0,3),
    Replicate3=c(0,1,2,0,0,3))

## required for functions inflate, stcs and mefa
library(mefa)

## this repeats SITE and SPECIES tags,
## and puts counts and replicate in a data frame
x <- data.frame(inflate(d[,1:2], rep(3, 6)),
    Counts=array(t(d[,3:5])),
    Replicate=rep(1:3, 6))

## something you wanted, except for NA's with xtabs (stats)
y1 <- xtabs(Counts ~ interaction(x$SITE, x$Replicate) + SPECIES, x)
## replicates cross tabulated separately
y2 <- xtabs(Counts ~ SITE + SPECIES + Replicate, x)
## same with mefa (will give you warnings
## due to some 'empty sample' misspecifications)
m <- mefa(stcs(x))
m$segm

Yours,

Peter

Peter Solymos, PhD
Postdoctoral Fellow
Department of Mathematical and Statistical Sciences
University of Alberta
Edmonton, Alberta, T6G 2G1
Canada
email <- paste("solymos", "ualberta.ca", sep = "@")



On Thu, Jul 9, 2009 at 5:37 AM, Maria Dulce
Subida<mdsubida at icman.csic.es> wrote:
> Hello everyone!
>
> I'm having a problem in casting a data frame with the reshape package. I
> have an original data set of species abundances in replicate samples at
> certain sites, with the following form:
>
>
>
> SITE   SPECIES   Replicate1   Replicate2   Replicate3
>
>   I               A              1                   3                 0
>
>   I               B              2                   5                1
>
>   I               C              1                   0                 2
>
>   II             A              4                   2                0
>
>   II             C              1                   0                0
>
>   II             D              6                   3                3
>
>
>
> Please notice that site II does not have species B and has a new species D,
> the remaining two are shared with site I.
>
>
>
> I need to get these data in the form of a matrix like:
>
>
>
> SITE.REPLICATE     A          B         C         D
>
>            I.1                   1          2          1          NA
>
>            I.2                   3          5          0          NA
>
>            I.3                   0          1          2          NA
>
>            II.1                  4          NA      1          6
>
>            II.2                  2          NA      0          3
>
>            II.3                  0          NA      0          3
>
>
>
> Using the above "toy data" in R, everything works fine using melt and recast
> as follows (lets call test to may initial matrix):
>
>> testm <- melt (test, id.var=c("SITE","SPECIES"))
>
>> testc <- cast(testm, ...~SPECIES)
>
>> testc
>
>   SITE   variable    A  B C  D
>
> 1    I    Replicate1  1  2 1 NA
>
> 2    I    Replicate2  3  5 0 NA
>
> 3    I    Replicate3  0  1 2 NA
>
> 4   II    Replicate1  4 NA 1  6
>
> 5   II    Replicate2  2 NA 0  3
>
> 6   II    Replicate3  0 NA 0  3
>
>
>
>  However, when I use the same code in my real data set which is considerably
> larger (73 sites and 7 replicates for site, resulting in a molten matrix of
> 14469 x 4), the cast function does some kind of aggregation (in fact it
> advices of an aggregation using the default fun.aggregate) that I was not
> able to understand. I also tried to split my original data frame in order to
> get molten matrices smaller than 5500x4, but I got the same problem.
>
> Could anyone help me with this?
>
>
>
>  (I use R 2.8.1 for Windows)
>
>
>
> Thank you very very much in advance!
>
>
>
>
>
> Cheers,
>
>
>
> Dulce
>
>
>
>
>
>
>
>
>        [[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-ecology mailing list
> R-sig-ecology at r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-ecology
>
>


More information about the R-sig-ecology mailing list