On Oct 30, 2009, at 3:29 PM, PDXRugger wrote:


David,
You are correct. I think the frist two assumptions can be thrown out and only the latter two (c,d) can be considered. So how would i combine Acres
for matching Bldgids based on assumptions c,d?


I also think your requested output failed to add the ImpValue of rows 10 and 11 (but did add for cases 5 & 6 as well as 8 & 9. So it's not exactly clear what you want.


David Winsemius wrote:


On Oct 29, 2009, at 5:23 PM, PDXRugger wrote:


Terrific help thank you.
dupbuild<-aggregate(DF$Acres, list(Bldgid), sum)
This line worked best.

Now im going to challenge everyone (i think?)

Consider the following:


Acres<-c(100,101,100,130,156,.5,293,300,.09,100,12.5)
Bldgid<-c(1,2,3,4,5,5,6,7,7,8,8)
Year<-c(1946,1952,1922,1910,1955,1955,1999,1990,1991,2000,2000)
ImpValue<-c(1000,1400,1300,900,5000,1200,500,1000,300,1000,1000)
DF=cbind(Acres,Bldgid,Year,ImpValue)
DF<-as.data.frame(DF)

I would like to do the same, except there are some rules i want to
follow.
I only want to aggregate the Acres if :
a) The Years are not identical
b) The ImpValues are not identical

So we are striking out a and b and we only want to sum values where the following obtain:


c) The Years are identical and the ImpValue are not
d)The ImpValues are identical and the Years are not

Do an outer join on the DF:
mrgDF <- merge(DF, DF, by="Bldgid", all=T)

# and identify cases within that construct that satisfy the non- equalities:

> with( mrgDF, mrgDF[ImpValue.x != ImpValue.y | Acres.y != Acres.x , ] )
   Bldgid Acres.x Year.x ImpValue.x Acres.y Year.y ImpValue.y
6       5  156.00   1955       5000    0.50   1955       1200
7       5    0.50   1955       1200  156.00   1955       5000
11      7  300.00   1990       1000    0.09   1991        300
12      7    0.09   1991        300  300.00   1990       1000
15      8  100.00   2000       1000   12.50   2000       1000
16      8   12.50   2000       1000  100.00   2000       1000

You should be able to take it from here ... after you figure out what it is that you want.

--
David.


As I review your Boolean logic, I run into serious problems.

c) and d) cannot be true if a and b) are true.

So no cases satisfy all 4 specs. In particular both of the pairs you
say you want aggregated (5+6) and 10+11) violate rule a) and the
second pair also violates b).

--
David

but if the Acres and ImpValues are identical i would still like to
add the
Acres together and form one case.
If the cases are put together i would also like to add the ImpValues
together.  So the below

  Acres Bldgid Year ImpValue
1  100.00      1 1946     1000
2  101.00      2 1952     1400
3  100.00      3 1922     1300
4  130.00      4 1910      900
5  156.00      5 1955     5000
6    0.50      5 1955     1200
7  293.00      6 1999      500
8  300.00      7 1990     1000
9    0.09      7 1991      300
10 100.00      8 2000     1000
11  12.50      8 2000     1000

would become

  Acres Bldgid Year ImpValue
1  100.00      1 1946     1000
2  101.00      2 1952     1400
3  100.00      3 1922     1300
4  130.00      4 1910      900
5  156.50     5 1955     6200
7  293.00      6 1999      500
8  300.09     7 1990     1300
10 112.50      8 2000     1000

Thanks, i gave it a bunch of shots but nothing worth posting.





PDXRugger wrote:

Hello All,
 I would like to select records with identical IDs then sum an
attribute
then and return them to the data frame as a single record.  Please
consider


Acres<-c(100,101,100,130,156,.5,293,300,.09)
Bldgid<-c(1,2,3,4,5,5,6,7,7)

DF=cbind(Acres,Bldgid)
DF<-as.data.frame(DF)

So that:

Acres Bldgid
1 100.00      1
2 101.00      2
3 100.00      3
4 130.00      4
5 156.00      5
6   0.50      5
7 293.00      6
8 300.00      7
9   0.09      7

Becomes

Acres Bldgid
1 100.00      1
2 101.00      2
3 100.00      3
4 130.00      4
5 156.50      5
7 293.00      6
8 300.09      7

dup<-unique(DF$Bldgid[duplicated(Bldgid)])
dupbuild<-DF[DF$Bldgid %in% dup,]
dupbuild..dupareasum<-sum(dupbuild$Acres[duplicated(dupbuild
$Bldgid)])

This sums the unique Ids of the duplicated records, not whati want.
Thanks ahead of time

JR




--
View this message in context:
http://www.nabble.com/Summing-identical-IDs-tp26118922p26121056.html
Sent from the R help mailing list archive at Nabble.com.

______________________________________________
R-help@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.

David Winsemius, MD
Heritage Laboratories
West Hartford, CT

______________________________________________
R-help@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.



--
View this message in context: 
http://old.nabble.com/Summing-identical-IDs-tp26118922p26135732.html
Sent from the R help mailing list archive at Nabble.com.

______________________________________________
R-help@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.

David Winsemius, MD
Heritage Laboratories
West Hartford, CT

______________________________________________
R-help@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.

Reply via email to