From: Hans Gardfjell <hans.gardfjell_at_emg.umu.se>

Date: Wed 07 Dec 2005 - 22:06:44 EST

*/>/
*

/>/ 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
*

*/>/
*

*/>/
*

/>

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Wed Dec 07 22:20:37 2005

Date: Wed 07 Dec 2005 - 22:06:44 EST

If you order your factor levels in your vectors in the order you want in the output,
then the prop.table(prop()) command will give you what you want.

But you have to reorder the factor levels so that the levels commands give the following output:

>levels(trans$class)

[1] "seed" "veg" "repr"

>levels(trans$fate)

[1] "seed" "veg" "repr" "dead"

That means that you need to include "seed" as a factor level in fate (even if that level is unused). The prop.table(table()) command will then produce a 3 by 4 table. Remove the last row (that contains the proportion dead), and your set.

Hans Gardfjell

Dept of Ecology and Environmental science
Umeå University, Sweden

Chris Stubben wrote:

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

the

/>/ size vector to get survival probabilities

/>

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Wed Dec 07 22:20:37 2005

*
This archive was generated by hypermail 2.1.8
: Wed 07 Dec 2005 - 23:33:36 EST
*