An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20130612/894427ca/attachment.pl>
change factor to mtrix
3 messages · Gallon Li, Jim Lemon, Peter Dalgaard
On 06/12/2013 05:47 PM, Gallon Li wrote:
i wish to change a column of factor variable to multiple columns of
zero-ones
for example, my factor could be
ff=c('a','a','b','b','c','c')
then I want to have two columns (for three levels) that are
0 0
0 0
1 0
1 0
0 1
0 1
how can i do this fast?
Hi Gallon, If you want exactly the output shown above, it is not trivial. You could convert ff to a factor, then use as.numeric to get: a = 1 b = 2 c = 3 If you subtract one and display the numbers in two digits of binary: a = 00 b = 01 c = 10 Then if you apply as.character and strsplit, you can get: a = "0" "0" b = "0" "1" c = "1" "0" Finally, as.numeric will give you numbers. This does not produce the numbers above, but it might give you an idea of what to do. Jim
On Jun 12, 2013, at 09:47 , Gallon Li wrote:
i wish to change a column of factor variable to multiple columns of
zero-ones
for example, my factor could be
ff=c('a','a','b','b','c','c')
then I want to have two columns (for three levels) that are
0 0
0 0
1 0
1 0
0 1
0 1
how can i do this fast?
Maybe not fast, but quick:
fff <- factor(ff) model.matrix(~fff)[,-1]
fffb fffc 1 0 0 2 0 0 3 1 0 4 1 0 5 0 1 6 0 1 Possibly faster, skipping some "red tape":
CC <- contrasts(fff) CC
b c a 0 0 b 1 0 c 0 1
CC[fff,]
b c a 0 0 a 0 0 b 1 0 b 1 0 c 0 1 c 0 1
[[alternative HTML version deleted]]
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Peter Dalgaard, Professor Center for Statistics, Copenhagen Business School Solbjerg Plads 3, 2000 Frederiksberg, Denmark Phone: (+45)38153501 Email: pd.mes at cbs.dk Priv: PDalgd at gmail.com