on 01/26/2009 12:23 PM Dominik Hattrup wrote:> Hey everyone,
>
> I am looking for the easiest way to get this table
>
> # Table2
> Year / 2000 / 2002 / 2004
> Julia / 3 / 4 / 1
> Peter / 1 / 2 / 4
> ... / ... / ... / ...
>
> out of this one?
>
> # Table1
> name / year / cases
> Julia / 2000 / 1
> Julia / 2000 / 2
> Julia / 2002 / 4
> Peter / 2000 / 1
> Julia / 2004 / 1
> Peter / 2004 / 2
> Peter / 2002 / 2
> Peter / 2004 / 2
> ... / ... / ...
>
> Code for table1:
> name <-
c('Julia','Julia','Julia','Peter','Julia','Peter','Peter','Peter')
> year <- c(2000,2000,2002,2000,2004,2004,2002,2004)
> cases <- c(1,2,4,1,1,2,2,2)
> table1 <- data.frame(name,year,cases)
>
> Thanks! Dominik
table() generates frequencies from individual values, not from already
tabulated data.
In this case, you can use xtabs():
> xtabs(cases ~ name + year, data = table1)
year
name 2000 2002 2004
Julia 3 4 1
Peter 1 2 4
See ?xtabs
An alternative would be to use tapply():
> with(table1, tapply(cases, list(name = name, year = year), sum))
year
name 2000 2002 2004
Julia 3 4 1
Peter 1 2 4
See ?tapply
HTH,
Marc Schwartz