[R] Design matrix not identity
Sundar Dorai-Raj
sundar.dorai-raj at PDF.COM
Wed May 12 18:44:03 CEST 2004
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
More information about the R-help
mailing list