[R] Data manipulation

Blaser Nello nblaser at ispm.unibe.ch
Fri Mar 15 14:27:03 CET 2013


Is this what you want to do?

D2 <- expand.grid(Class=unique(D$Class), X=unique(D$X))
D2 <- merge(D2, D, all=TRUE)
D2$Count[is.na(D2$Count)] <- 0

W <- aggregate(D2$Count, list(D2$Class, D2$X), "sum")
W

Best, 
Nello


-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of IOANNA
Sent: Freitag, 15. März 2013 13:41
To: r-help at r-project.org
Subject: [R] Data manipulation

Hello all, 

 

I would appreciate your thoughts on a seemingly simple problem. I have a database, where each row represent a single record. I want to aggregate this database so I use the aggregate command :

 

D<-read.csv("C:\\Users\\test.csv")

 

attach(D)

 

by1<-factor(Class)

by2<-factor(X)

W<-aggregate(x=Count,by=list(by1,by2),FUN="sum")

 

The results I get following the form:

 

>W

  Group.1 Group.2 x

1       1     0.1 4

2       2     0.1 7

3       3     0.1 1

4       1     0.2 3

5       3     0.2 4

6       3     0.3 4

 

 

However, what I really want is an aggregation which includes the zero values, i.e.:

 

>W

  Group.1 Group.2 x

1       1     0.1 4

2       2     0.1 7

3       3     0.1 1

4       1     0.2 3

        2     0.2 0

5       3     0.2 4

1        0.3 0

2        0.3 0

6       3     0.3 4

 

 

How can I achieve what I want?

 

Best regards, 

Ioanna



More information about the R-help mailing list