[R] Constructing a transition matrix

Chris Stubben stubben at lanl.gov
Wed Dec 7 01:43:13 CET 2005


Hi again,

I almost figured this out, but still need some help on the last part.

I can use prop.table to get survival probabilities...

A <- t(prop.table( table(trans$class, trans$fate),1) )

             rep      seed       veg
   dead 0.0000000 0.3333333 0.0000000
   rep  0.5000000 0.0000000 1.0000000
   veg  0.5000000 0.6666667 0.0000000


so now I just need to format the matrix.  I thought I could create a 
matrix of zeroes using size class names,

dev<- c("seed","veg", "rep").


A0<-matrix(numeric(9), nrow=3, dimnames=list(dev,dev) )
      seed veg rep
seed    0   0   0
veg     0   0   0
rep     0   0   0


but how do I assign values in A to the corresponding rows and columns in 
A0?  I hope there is an easy solution that I'm overlooking.


      seed veg   rep
seed    0   0     0
veg  0.67   0   0.5
rep     0   1   0.5


Thanks,

Chris



Chris Stubben wrote:
> Hi,
> 
> I would like to construct a transition matrix from a data frame with 
> annual transitions of marked plants.
> 
> plant<-c(1:6)
> class<-c("seed","seed", "seed", "veg", "rep", "rep")
> fate<-c("dead", "veg","veg","rep", "rep", "veg")
> 
> trans<-data.frame(plant, class, fate)
> 
>   plant class fate
> 1     1  seed dead
> 2     2  seed  veg
> 3     3  seed  veg
> 4     4   veg  rep
> 5     5   rep  rep
> 6     6   rep  veg
> 
> I have been using sql queries to do this, but I would like to construct 
> the matrix in R since I plan to resample transitions using 
> trans[sample(nrow(trans), 6, replace=T), ]
> 
> I know I can get the original size vector using table()
> 
> data.matrix(table(trans$class))
>      [,1]
> rep     2
> seed    3
> veg     1
> 
> 
> but I don't know how to get counts of each class-fate combination where 
> fate does NOT equal dead
> 
> seed veg  = 2
> veg  rep  = 1
> rep  rep  = 1
> rep  veg  = 1
> 
> 
> or how to divide the class-fate count by the original class count in the 
> size vector to get survival probabilities
> 
> seed veg  = 2 / 3 seed = 0.67
> veg  rep  = 1 / 1 veg  = 1
> rep  rep  = 1 / 2 rep  = 0.5
> rep  veg  = 1 / 2 rep  = 0.5
> 
> 
> or construct the square matrix with rows and columns in the same 
> developmental sequence like dev<- c("seed","veg", "rep").
> 
>      seed veg   rep
> seed    0   0     0
> veg  0.67   0   0.5
> rep     0   1   0.5
> 
> Any help or suggestions would be appreciated.
> Thanks,
> 
> 
> Chris Stubben
> 
> 
> -- 
> Los Alamos National Lab
> BioScience Division
> MS M888
> Los Alamos, NM 87545
> 
> 
>




More information about the R-help mailing list