[R] Group by in R

Nick Angelou nikolay12 at yahoo.com
Mon Apr 13 15:56:39 CEST 2009



Gabor Grothendieck wrote:
> 
> SQL has the order by clause.
> 

Gabor, thanks for the suggestion. I thought about this but ORDER BY cannot
create the tabular structure that I need. Here is more detail about my
setting:

f1, f2, f3 have unique triplets (each repeating a different number of
times). Each of these triplets falls into one of the two categories of f4.
Here is a sample:

> data
   X1 X2 X3 X4
1   1  2  2  1
2   1  1  2  2
3   1  1  2  2
4   2  2  1  2
5   1  1  2  2
6   2  2  1  2
7   1  1  2  1
8   2  2  1  2
9   1  2  1  1
10  1  1  2  2

sqldf("select X1, X2, X3, X4, count(*) CNT from data group by X1, X2, X3, X4
ORDER BY X4, X1, X2, X3")

  X1 X2 X3 X4 CNT
1  1  1  2  1   1
2  1  2  1  1   1
3  1  2  2  1   1
4  1  1  2  2   4
5  2  2  1  2   3

The counts are fine, though it's not exactly what I need. I need a kind of
contingency table:

                                 | levels of X4 |
                                 ---------------
unique triplets of X1:X3 |  1   |   2   |

-----------------------------------------
            1 1 1             |  0       0
            1 1 2             |  1       4 
            1 2 1             |  1       0
            1 2 2             |  1       0
            2 1 1             |  0       0
            2 1 2             |  0       0
            2 2 1             |  0       3
            2 2 2             |  0       0


So the final result should be a table structure like:


0 0
1 4
1 0
1 0
0 0
0 0
0 3
0 0

I guess I could probably do this in SQL with a combination of OUTER JOINs
but I thought
that R might have a more elegant solution based on "factor" and "table".

Thanks,
Nick 
-- 
View this message in context: http://www.nabble.com/Group-by-in-R-tp23020587p23022717.html
Sent from the R help mailing list archive at Nabble.com.




More information about the R-help mailing list