[R] Count or summary data
Marc Schwartz
MSchwartz at mn.rr.com
Fri Dec 30 16:10:37 CET 2005
On Fri, 2005-12-30 at 15:47 +0100, Xiyan Lon wrote:
> Dear all,
> I want to summary and count my data something like
> > te.Ce
> [,1] [,2]
> [1,] -1 0.05
> [2,] 1 0.05
> [3,] 1 0.00
> [4,] 0 0.05
> [5,] -1 0.00
> [6,] 0 0.10
> [7,] 1 0.10
> [8,] -1 0.00
> [9,] -1 0.10
> [10,] 0 0.05
> [11,] 0 0.10
> [12,] -1 0.10
> [13,] 1 0.00
> [14,] -1 0.05
> [15,] 1 0.00
>
> How could I count (summary) all my data which I need the result like
>
> for 0.05
> -1 0 1
> 2 2 1
>
> for 0.00
> -1 0 1
> 2 0 3
>
> for 0.10
> -1 0 1
> 2 2 1
>
> I have tried with summary but I did not find what I need.
> Maybe someone could help me.
> Happy new year.
> Xiyan Lon
There are several options, depending upon the output format you require.
The easiest is probably to use table() to generate a crosstabs of the
two columns:
> table(te.Ce[, 2], te.Ce[, 1])
-1 0 1
0 2 0 3
0.05 2 2 1
0.1 2 2 1
Then, there are by() and tapply(), each of which subsets the matrix by
the value in the second column, resulting in the following:
> by(te.Ce[, 1], te.Ce[, 2], table)
INDICES: 0
-1 1
2 3
------------------------------------------------------
INDICES: 0.05
-1 0 1
2 2 1
------------------------------------------------------
INDICES: 0.1
-1 0 1
2 2 1
> tapply(te.Ce[, 1], te.Ce[, 2], table)
$"0"
-1 1
2 3
$"0.05"
-1 0 1
2 2 1
$"0.1"
-1 0 1
2 2 1
See ?table, ?by and ?tapply for more information.
HTH,
Marc Schwartz
More information about the R-help
mailing list