I would re-expand the model matrix by indexing its (nobs) rows with a longer vector (of length n) containing the correspondence. If there is only one term (say "Z") in the formula which contains the problematic NAs, I would do (roughly)
ff <- Y ~ Z # following the example in ?model.matrix mat <- model.matrix(ff, model.frame(ff, data))[cumsum(!is.na(Z)), ] mat[is.na(Z), ] <- NA The second line above creates an n x k matrix in which each row where Z has NA simply duplicates the last preceding non-NA row. The third line above blanks out those duplicate rows by filling them with NAs instead. This simple strategy fails if Z[1] is NA. I haven't time to think up a solution for that case, other than permuting rows in the entire data set so that it doesn't happen. HTH - tom blackwell - u michigan medical school - ann arbor - On Mon, 27 Oct 2003, J.R. Lockwood wrote: > I have a factor (with "n" observations and "k" levels), with only > "nobs" < n of the observations not missing. I would like to produce a > (n x k) model matrix with treatment contrasts for this factor, with > rows of NAs placeholding the missing observations. If I use > model.matrix() I get back a (nobs x k) matrix. Is there an easy way > to get the (n x k) without carrying along a row ID and merging? > Thanks. > > J.R. Lockwood > 412-683-2300 x4941 > [EMAIL PROTECTED] > http://www.rand.org/methodology/stat/members/lockwood/ ______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help
