Skip to content

trouble with summary tables with several variables using aggregate function

6 messages · Phil Spector, Marc Schwartz, Dennis Murphy +1 more

#
Luma -
    If I understand you correctly, I think the easiest way
to get what you want is to use the reshape function on
the output from aggregate:
Var1 Var2 dummy.D dummy.I
1   S1   T1       2       2
2   S2   T1       2       2
3   S1   T2       2       2
7   S2   T2      NA       4

 					- Phil Spector
 					 Statistical Computing Facility
 					 Department of Statistics
 					 UC Berkeley
 					 spector at stat.berkeley.edu
On Thu, 19 May 2011, Luma R wrote:

            
#
Another approach, using aggregate(), presuming that the data is in a data frame called 'DF':
Var1 Var2 x.D x.I
1   S1   T1   2   2
2   S2   T1   2   2
3   S1   T2   2   2
4   S2   T2   0   4


HTH,

Marc Schwartz
On May 19, 2011, at 1:10 PM, Phil Spector wrote:

            
#
Hi:

The dummy column really isn't necessary. Here's another way to get the
result you want. Let d be the name of your example data frame.

d <- d[, 1:3]
(dtable <- as.data.frame(ftable(d, row.vars = c(1, 2))))
  Var1 Var2 Var3 Freq
1   S1   T1    D    2
2   S2   T1    D    2
3   S1   T2    D    2
4   S2   T2    D    0
5   S1   T1    I    2
6   S2   T1    I    2
7   S1   T2    I    2
8   S2   T2    I    4

An alternative to the reshape() function is the reshape2 package,
which has a function dcast() that allows you to rearrange the data
frame as you desire.

library(reshape2)
dcast(dtable, Var1 + Var2 ~ Var3)
Using Freq as value column: use value_var to override.
  Var1 Var2 D I
1   S1   T1 2 2
2   S1   T2 2 2
3   S2   T1 2 2
4   S2   T2 0 4


HTH,
Dennis
On Thu, May 19, 2011 at 2:13 AM, Luma R <rluma1979 at gmail.com> wrote:
#
Oops, didn't see Marc's reply. His solution is much more compact. For
R 2.11.0 and above, aggregate() now has a formula interface that
usually works nicely:

aggregate(Var3 ~ Var1 + Var2, data = d, FUN = table)
  Var1 Var2 Var3.D Var3.I
1   S1   T1      2      2
2   S2   T1      2      2
3   S1   T2      2      2
4   S2   T2      0      4

Dennis
On Thu, May 19, 2011 at 12:29 PM, Dennis Murphy <djmuser at gmail.com> wrote: