[R] Aggregation

arun smartpink111 at yahoo.com
Wed Feb 19 03:01:06 CET 2014


Hi,
May be this helps:
DataA <- read.table(text="ID,Var1,Var2
1,A,100
1,B,50
2,A,200
2,B,100
2,B,50",sep=",",header=TRUE,stringsAsFactors=FALSE)

dcast(DataA,ID~Var1,value.var="Var2")  ## I guess this is what you mentioned
#Aggregation function missing: defaulting to length
#  ID A B
#1  1 1 1
#2  2 1 2
 DataB <- ddply(DataA,.(ID,Var1),transform,Var1ID=paste0(ID,seq_along(Var1)))
 dcast(DataB,ID+Var1ID~Var1,value.var="Var2")[,-2]
# ID   A   B
#1  1 100  50
#2  2 200 100
#3  2  NA  50

A.K.








On Tuesday, February 18, 2014 6:08 PM, farnoosh sheikhi <farnoosh_81 at yahoo.com> wrote:

For some reason, I get frequency not the values although I have var2 as numeric and no missing values.
Why is that?

Regards, Farnoosh Sheikhi



On Thursday, February 13, 2014 1:29 PM, arun <smartpink111 at yahoo.com> wrote:

Sorry, the library should be 
library(reshape2)






On Thursday, February 13, 2014 4:27 PM, arun <smartpink111 at yahoo.com> wrote:
HI Farnoosh,

You can use ?dcast()
library(plyr)

 dcast(DataA,ID~Var1,value.var="Var2")
#  ID   A   B
#1  1 100  50
#2  2 200 100
A.K.





On Thursday, February 13, 2014 2:59 PM, farnoosh sheikhi <farnoosh_81 at yahoo.com> wrote:

Hi Arun,

I hope all is well. I need to aggregate a data like below:

DataA

ID       Var1   Var2
1        A100
1B50
2        A200
2B100


The transformed data should
be like below:
ID   AB
1100   50
2200100


Thanks a lot.

Regards, Farnoosh Sheikhi




More information about the R-help mailing list