Patrik Waldmann wrote:

Hello again,

I was too quick before. What I was looking for was a function that
constructs the design (or incidence) matrix (X in a linear model) from a
factor. Uwe Ligges suggested using model.matrix and this does almost what I
want, but it is first necessary to construct a data variable. It also asigns
ones to all rows of the first column (because this is set to be the
contrast, not really what I want - see below). Maybe time for a function
that just converts a factor into a design matrix?

I have a factor
factor<-as.factor(c(1,1,2,2,3,3,3))

and I want a matrix
1 0 0
1 0 0
0 1 0
0 1 0
0 0 1
0 0 1
0 0 1


Patrik Waldmann###########################################


model.matrix will do this for you.

R> fac <- as.factor(c(1, 1, 2, 2, 3, 3, 3))
R> model.matrix(~ fac - 1)
  fac1 fac2 fac3
1    1    0    0
2    1    0    0
3    0    1    0
4    0    1    0
5    0    0    1
6    0    0    1
7    0    0    1
attr(,"assign")
[1] 1 1 1
attr(,"contrasts")
attr(,"contrasts")$fac
[1] "contr.treatment"

The "-1" drops the intercept.

Is this what you need?

--sundar

______________________________________________
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to