I have a data set which looks like the following (partially):
id name dummy
1 Jane 1
1 Jane 0
1 Jane 1
2 Mike 0
2 Mike 0
2 Mik
ave
can be used to produce the groupwise sum, while keeping the original position:
x[with(x, ave(dummy, name, FUN=sum))>0,]
## id name dummy
## 1 1 Jane 1
## 2 1 Jane 0
## 3 1 Jane 1
## 9 3 Tom 1
## 10 3 Tom 1
## 11 3 Tom 0
## 12 3 Tom 0
ave
is something like aggregate
but copies the aggregated value for each row in the set:
with(x, ave(dummy, name, FUN=sum))
## [1] 2 2 2 0 0 0 0 0 2 2 2 2