# [R] pivot table in R

Romain Francois rfrancois at mango-solutions.com
Tue Jan 29 13:17:10 CET 2008

```Hi Pietro,

Depending on the actual structure you want in the output, you can use
some of the functions in the apply family, particularly tapply,
aggregate, or by. Something like :

R> tapply( d[["no_of_accidents" ]], d[[ "sex" ]], sum )
F M
34 83

R> aggregate( d["no_of_accidents" ], d[ "sex" ], sum )
sex no_of_accidents
1 F 34
2 M 83

R> by( d[["no_of_accidents" ]], d[[ "sex" ]], sum )
INDICES: F
[1] 34
------------------------------------------------------------
INDICES: M
[1] 83

Cheers,

Romain

--
Mango Solutions
data analysis that delivers

R for finance training course :: 3 days :: London (27-29/02/2008)
http://www.mango-solutions.com/services/rtraining/r_finance.html

pietro.parodi at aon.co.uk wrote:
> Hello,
>
> I'm struggling with an elementary problem with R. I have a simple data
> frame such as this one giving the number of accidents subdivided by sex,
> age and region.
>
> sex     age     region          no_of_accidents
>
> F       young   north           10
> F       young   south           12
> F       old     north           5
> F       old     south           7
> M       young   north           24
> M       young   south           30
> M       old     north           12
> M       old     south           17
>
> and I would like to build a pivot table, e.g. obtaining the sum of the
> number of accidents for each sex:
>
> sex     age     region          no_of_accidents
>
> F       (any)   (any)           34
> M       (any)   (any)           83
>
> but I can't seem to obtain this result simply in R, except by embarking in
> complicated "for" loops.
>
> I have checked the documentation on such functions as "table()" and the
> documentation on "An introduction to R" but couldn't solve the problem.
>
> Cheers
>
> Pete
>
>
> PLEASE CONSIDER THE ENVIRONMENT BEFORE PRINTING THIS E-MAIL
>
> For Aon’s standard conditions associated with this e-mail please visit http://www.aon.com/uk/en/email-footer/aon-limited.jsp
> Aon Limited
> Registered Office: 8 Devonshire Square, London EC2M 4PL
> Registered in London No. 210725 . VAT Registration No. 480 8401 48
>
> Aon Limited is authorised and regulated by the Financial Services Authority in respect of insurance mediation activities only.
>
> 	[[alternative HTML version deleted]]
>
>

```