Hi:

Perhaps this might be useful:

tst <- read.table(textConnection("
+    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"), header = TRUE)

tst2 <- reshape(tst, idvar = c('plate.id', 'well.id'), timevar = 'Group',
                 direction = 'wide')
tst2
  plate.id well.id HYB.Control rlt1.Control HYB.ovca rlt1.ovca
1       P1      A1    SKOV3hyb        0.190 SKOV3hyb     0.184
2       P1      A2    SKOV3hyb        0.210 SKOV3hyb     0.229
3       P1      A3    SKOV3hyb        0.205 SKOV3hyb     0.214
4       P1      A4    SKOV3hyb        0.206 SKOV3hyb     0.226
5       P1      A5    SKOV3hyb        0.184 SKOV3hyb     0.217

tst2$rlt1.diff <- rlt1.ovca - rlt1.Control

reshape() is reshaping the data based on plate.id * well.id combinations, so
the observations in Control and ovca should match on those two keys..

HTH,
Dennis


On Mon, Sep 27, 2010 at 12:47 PM, 1Rnwb <sbpurohit@gmail.com> wrote:

>
> 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.
>

	[[alternative HTML version deleted]]

