[R] avoiding too many loops - reshaping data
Erik Iverson
eriki at ccbr.umn.edu
Wed Nov 3 21:31:59 CET 2010
Hadley's reshape package (google for it) can
do this. There's a nice intro on the site.
> library(reshape)
> cast(melt(mydf, measure.vars = "value"), city ~ brand,
fun.aggregate = sum)
city x y z
1 a 3 23 450
2 b 12 42 231
Although the numbers differ slightly?
I've heard of the reshape2 package, but have no idea
if that's replaced the reshape package yet.
--Erik
Dimitri Liakhovitski wrote:
> Hello!
>
> I have a data frame like this one:
>
> mydf<-data.frame(city=c("a","a","a","a","a","a","a","a","b","b","b","b","b","b","b","b"),
> brand=c("x","x","y","y","z","z","z","z","x","x","x","y","y","y","z","z"),
> value=c(1,2,11,12,111,112,113,114,3,4,5,13,14,15,115,116))
> (mydf)
>
> What I need to get is a data frame like the one below - cities as
> rows, brands as columns, and the sums of the "value" within each
> city/brand combination in the body of the data frame:
>
> city x y z
> a 3 23 336
> b 7 42 231
>
>
> I have written a code that involves multiple loops and subindexing -
> but it's taking too long.
> I am sure there must be a more efficient way of doing it.
>
> Thanks a lot for your hints!
>
>
More information about the R-help
mailing list