[R] data.frame and ddply
David Winsemius
dwinsemius at comcast.net
Fri Apr 16 17:54:03 CEST 2010
On Apr 16, 2010, at 9:28 AM, arnaud Gaboury wrote:
> Dear group,
>
> Here is my df :
>
>
> futures <-
> structure(list(CONTRAT = c("WHEAT May/10 ", "WHEAT May/10 ",
> "WHEAT May/10 ", "WHEAT May/10 ", "COTTON NO.2 May/10 ", "COTTON NO.
> 2 May/10
> ",
> "COTTON NO.2 May/10 ", "PLATINUM Jul/10 ", " SUGAR NO.11 May/10 ",
> " SUGAR NO.11 May/10 ", " SUGAR NO.11 May/10 ", " SUGAR NO.11 May/10
> ",
> " SUGAR NO.11 May/10 ", "ROBUSTA COFFEE (10) May/10 ", "ROBUSTA
> COFFEE (10)
> May/10 ",
> "ROBUSTA COFFEE (10) May/10 ", "ROBUSTA COFFEE (10) May/10 ",
> "ROBUSTA COFFEE (10) May/10 ", "ROBUSTA COFFEE (10) May/10 ",
> "ROBUSTA COFFEE (10) May/10 ", "ROBUSTA COFFEE (10) May/10 ",
> "ROBUSTA COFFEE (10) May/10 ", "ROBUSTA COFFEE (10) May/10 ",
> "ROBUSTA COFFEE (10) May/10 ", "ROBUSTA COFFEE (10) May/10 "),
> QUANTITY = c(1, 1, 1, 1, 1, 1, 1, -1, 1, 1, 1, 1, 1, 2, 1,
> 1, 1, 2, 1, 1, 1, 1, 2, 1, 1), SETTLEMENT = c("467.7500",
> "467.7500", "467.7500", "467.7500", "78.1300", "78.1300",
> "78.1300", "1,739.4000", "16.5400", "16.5400", "16.5400",
> "16.5400", "16.5400", "1,353.0000", "1,353.0000", "1,353.0000",
> "1,353.0000", "1,353.0000", "1,353.0000", "1,353.0000",
> "1,353.0000",
> "1,353.0000", "1,353.0000", "1,353.0000", "1,353.0000")), .Names =
> c("CONTRAT",
> "QUANTITY", "SETTLEMENT"), row.names = c(NA, 25L), class =
> "data.frame")
>
> Here is my code :
>
>> opfut=ddply(futures, c("CONTRAT","SETTLEMENT"), summarise, POSITION=
> sum(QUANTITY))
>
> Here is the output:
>
>> opfut
> CONTRAT SETTLEMENT POSITION
> 1 SUGAR NO.11 May/10 16.5400 5
> 2 COTTON NO.2 May/10 78.1300 3
> 3 PLATINUM Jul/10 1,739.4000 -1
> 4 ROBUSTA COFFEE (10) May/10 1,353.0000 15
> 5 WHEAT May/10 467.7500 4
>
> It is almost exactly what I want, except I am expecting the POSITION
> column
> before the SETTLEMENT column. How can I modified my code to obtain
> this?
Most compact way:
opfut[, c(1,3,2)]
Better readability:
opfut[, c("CONTRAT", "POSITION", "SETTLEMENT")]
And that particular operation is really basic stuff, suggesting that
you should go back to the basic R documents and spend some more time
educating yourself. Either of those extract operations could have been
appended on the ddply call as well, e.g.:
opfut=ddply(futures, c("CONTRAT","SETTLEMENT"), summarise, POSITION=
sum(QUANTITY))[, c(1,3,2)]
opfut
#----------------
CONTRAT POSITION SETTLEMENT
1 SUGAR NO.11 May/10 5 16.5400
2 COTTON NO.2 May/10\n 1 78.1300
3 COTTON NO.2 May/10 2 78.1300
4 PLATINUM Jul/10 -1 1,739.4000
5 ROBUSTA COFFEE (10)\nMay/10 1 1,353.0000
6 ROBUSTA COFFEE (10) May/10 14 1,353.0000
7 WHEAT May/10 4 467.7500
("Functional programming")
--
David Winsemius, MD
West Hartford, CT
More information about the R-help
mailing list