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.
Try something like this:
dfr <- 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 "))
difs <- lapply(split(dfr,dfr$plate.id), function(x)x$rlt1[x$Group
="Control"] - x$rlt1[x$Group == "ovca"])
dfr$Diff <- Reduce(c,difs)
greetings,
Remko
--
View this message in context:
http://r.789695.n4.nabble.com/subtraction-based-on-two-groups-in-a-dataframe-tp2716104p2716469.html
Sent from the R help mailing list archive at Nabble.com.
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]]
Seemingly Similar Threads
- bwplot questions: box order, axis breaks, and multiple y-axis labels
- bug found in predict.locfit in locfit package (PR#8057)
- bug found in predict.locfit in locfit package ( PR#8057)
- [Bug 103033] New: nouveau can't start my discrete nvidia card (BIOS / ACPI error)
- please Help me on a repeated measures anova