Hello I have a data set like below: plate.id well.id Group HYB rlt1 1 P1 A1 Control SKOV3hyb 0.190 2 P1 A2 Control SKOV3hyb 0.210 3 P1 A3 Control SKOV3hyb 0.205 4 P1 A4 Control SKOV3hyb 0.206 5 P1 A5 Control SKOV3hyb 0.184 385 P1 A1 ovca SKOV3hyb 0.184 386 P1 A2 ovca SKOV3hyb 0.229 387 P1 A3 ovca SKOV3hyb 0.214 388 P1 A4 ovca SKOV3hyb 0.226 389 P1 A5 ovca SKOV3hyb 0.217 390 P1 A6 ovca SKOV3hyb 0.207
each plate.id contains 384 readings for Group=="Control" and the same plate.id will contain 384 readings for Group=='ovca' to give a total of 768 values for P1 and so on for other plate ID's. I have to take the subtract the values of rlt1 colum between the two groups based on Plate ID. currently I am using > newdat2$diff<-(newdat2[1:5,5]-newdat2[6:10,5])/newdat2[1:5,5]*100 > newdat2 plate.id well.id Group HYB rlt1 diff 1 P1 A1 Control SKOV3hyb 0.190 3.157895 2 P1 A2 Control SKOV3hyb 0.210 -9.047619 3 P1 A3 Control SKOV3hyb 0.205 -4.390244 4 P1 A4 Control SKOV3hyb 0.206 -9.708738 5 P1 A5 Control SKOV3hyb 0.184 -17.934783 385 P1 A1 ovca SKOV3hyb 0.184 3.157895 386 P1 A2 ovca SKOV3hyb 0.229 -9.047619 387 P1 A3 ovca SKOV3hyb 0.214 -4.390244 388 P1 A4 ovca SKOV3hyb 0.226 -9.708738 389 P1 A5 ovca SKOV3hyb 0.217 -17.934783 I have tried apply(newdat2, 1, function(x) tapply(x, plate.id, newdat2$Control-newdat2$ovca))) I am looking for a more simple way to calculate the percent difference between the each value (based on well.id) for the two groups for 100's of plate.ids. I would appreciate help in getting this solved. Thanks -- View this message in context: http://r.789695.n4.nabble.com/subtraction-based-on-two-groups-in-a-dataframe-tp2716104p2716104.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.