Ajay--you seem to have gotten your question answered regarding putting your dataframe in the correct format, etc. If you haven't already, you might want to check out the MSM package for multi-state Markov and hidden Markov models in continuous time. It's been quite useful for some of my work regarding estimating Markov chains/matrices and is actively maintained.
Thanks, Charles <<< you wrote >>> Folks, I am holding a dataset where firms are observed for a fixed (and small) set of years. The data is in "long" format - one record for one firm for one point in time. A state variable is observed (a factor). I wish to make a markov transition matrix about the time-series evolution of that state variable. The code below does this. But it's hardcoded to the specific years that I observe. How might one generalise this and make a general function which does this? :-) -ans. set.seed(1001) # Raw data in long format -- raw <- data.frame(name=c("f1","f1","f1","f1","f2","f2","f2","f2"), year=c(83, 84, 85, 86, 83, 84, 85, 86), state=sample(1:3, 8, replace=TRUE) ) # Shift to wide format -- fixedup <- reshape(raw, timevar="year", idvar="name", v.names="state", direction="wide") # Now tediously build up records for an intermediate data structure try <- rbind( data.frame(prev=fixedup$state.83, new=fixedup$state.84), data.frame(prev=fixedup$state.84, new=fixedup$state.85), data.frame(prev=fixedup$state.85, new=fixedup$state.86) ) # This is a bad method because it is hardcoded to the specific values # of "year". markov <- table(destination$prev.state, destination$new.state) -- Ajay Shah http://www.mayin.org/ajayshah [EMAIL PROTECTED] http://ajayshahblog.blogspot.com <*(:-? - wizard who doesn't know the answer. [[alternative HTML version deleted]] ______________________________________________ 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