[R] Script for conditional sums of vectors

Pascal Oettli kridox at ymail.com
Mon Feb 4 11:01:53 CET 2013


Hello,

First, don't use "data" for a data frame, as it is a R function.

Here is a way to do what you are looking for:

a=c(1,1,1,1,1,1,2,2,2,2,2,2)
b=c(1,1,1,2,3,4,1,1,2,2,3,4)
c=c(400,200,300,100,500,300,200,100,500,400,200,100)

dat=data.frame(a=a,b=b,c=c)

dat.sum <- aggregate(c ~ a+b, dat, sum)
dat.sum <- reshape(dat.sum, timevar='b', idvar='a', direction='wide')

colnames(dat.sum) <- c('a','b.1','b.2','b.3','b.4')

HTH,
Pascal


Le 04/02/2013 18:29, Benjamin Gillespie a écrit :
> Hi guys,
>
> I hope you can help me with this (probably) simple query:
>
> I have a data frame:
>
> --------------------------
>
> a=c(1,1,1,1,1,1,2,2,2,2,2,2)
> b=c(1,1,1,2,3,4,1,1,2,2,3,4)
> c=c(400,200,300,100,500,300,200,100,500,400,200,100)
>
>
> data=data.frame(a=a,b=b,c=c)
>
> --------------------------
>
> And I would like to get the following output:
>
> --------------------------
>
> 	b
> a	1	2	3	4
> 1	900	100	500	300
> 2	300	900	200	100
>
> --------------------------
>
> The values in the output represent the sum of values "c" in data frame "data", for each "a" and "b" combination.
>
> For example, where "a" = 1 and "b" = 1, the output is 400+200+300 = 900.
>
> Please would anyone be able to provide a script to create my desired output?
>
> Many thanks in advance,
> 		
> Ben Gillespie
> Research Postgraduate
>
> School of Geography
> University of Leeds
> Leeds
> LS2 9JT
>
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



More information about the R-help mailing list