[R] Converting a dataframe to a matrix

Simon Blomberg s.blomberg1 at uq.edu.au
Wed Mar 11 07:24:35 CET 2009


xtabs is your friend:

xtabs(likes ~ color + name, data=dat)

       color
name    blue green red
  jake     1     1   0
  sally    1     1   0
  tom      0     0   1

See ?xtabs for more info. Note that I changed the "likes?" column to
just "likes". It is a bad idea to have question marks in variable names.

Simon.

On Wed, 2009-03-11 at 01:42 -0400, Jennifer Brea wrote:
> If I have a dataframe which is organized like this:
> 
>    name color likes?
> 1 sally   red    0
> 2 sally  blue    1
> 3 sally green    1
> 4  jake   red    0
> 5  jake  blue    1
> 6  jake green    1
> 7   tom   red    1
> 8   tom  blue    0
> 9   tom green    0
> 
> 
> And I want to create a matrix in the form:
> 
>       red blue green
> sally   0    1     1
> jake    0    1     1
> tom     1    0     0
> 
> 
> Are there any built-in commands that might help me do this?  Also, I 
> can't assume that there is an observation for every person-color.  In 
> other words, in the original dataset, there might be some colors for 
> which sally offered no opinion.  In some cases, this may be represented 
> by NA, in others, it may mean that no row exists for sally for that color.
> 
> Thank you!
> 
> ______________________________________________
> 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.
-- 
Simon Blomberg, BSc (Hons), PhD, MAppStat. 
Lecturer and Consultant Statistician 
School of Biological Sciences
The University of Queensland 
St. Lucia Queensland 4072 
Australia
Room 320 Goddard Building (8)
T: +61 7 3365 2506
http://www.uq.edu.au/~uqsblomb
email: S.Blomberg1_at_uq.edu.au

Policies:
1.  I will NOT analyse your data for you.
2.  Your deadline is your problem.

The combination of some data and an aching desire for 
an answer does not ensure that a reasonable answer can 
be extracted from a given body of data. - John Tukey.




More information about the R-help mailing list