Skip to content

test

5 messages · Dennis Murphy, K. Elo, ONKELINX, Thierry +1 more

#
Hi, i have that table



Thesis	Day	A	B	C
1	0	83.43	90.15	22.97
1	0	85.50	94.97	16.62
1	0	83.36	95.38	20.70
1	0	84.47	92.16	23.58
1	0	83.98	95.33	19.39
1	0	82.86	93.78	24.55
1	0	83.39	92.67	19.56
1	0	85.17	95.24	17.95
1	0	81.62	93.32	28.49
1	0	82.99	92.85	19.73
1	0	81.11	95.67	27.20
1	0	83.39	94.69	16.51
1	0	79.56	89.87	30.39
1	0	80.54	93.32	21.76
1	0	82.11	92.58	22.17
1	14	85.65	94.00	19.19
1	14	85.06	92.44	20.44
1	14	83.97	91.39	24.38
1	14	84.61	91.97	19.44
1	14	85.13	90.59	25.30
1	14	84.81	91.01	19.80
1	14	84.52	94.06	18.77
1	14	84.30	94.49	24.90
1	14	84.74	91.32	20.35
1	14	84.08	94.12	22.96
1	14	84.50	94.25	19.95
1	14	84.02	94.74	20.35
1	14	85.30	92.82	21.12
1	14	85.08	91.14	24.16
1	14	85.21	95.69	18.17
etc etc etc etc etc
2	0	83.43	90.15	22.97
2	0	85.50	94.97	16.62
2	0	83.36	95.38	20.70
2	0	84.47	92.16	23.58
2	0	83.98	95.33	19.39
2	0	82.86	93.78	24.55
2	0	83.39	92.67	19.56
2	0	85.17	95.24	17.95
2	0	81.62	93.32	28.49
2	0	82.99	92.85	19.73
2	0	81.11	95.67	27.20
2	0	83.39	94.69	16.51
2	0	79.56	89.87	30.39
2	0	80.54	93.32	21.76
2	0	82.11	92.58	22.17
2	14	84.48	91.23	20.44
2	14	85.22	93.08	22.54
2	14	83.89	92.74	25.11
etc etc etc etc etc

I need to subtract from every number the other numbers of the same thesis
and same day.

Example:
A(row1) - A (row2) (same for B and C)
A(row1) - A (row3)
etc until the last Thesis 1 and Day 0
A(row2) - A (row3)
etc etc until the last Thesis 1 and Day 0

Same for the others theses and days.

How can i do that?

Sorry for my english.
#
Dear Romezo,

a solution maybe not that elegant and effective, but seems to work:

test_calculate<-function() {
   tarrow<-1
   TARGET<-data.frame("Thesis"=0, "Day"=0,"A"=0,"B"=0,"C"=0)
   for (i in c(unique(my.data$Thesis))) {
     for (j in c(unique(my.data$Day[ my.data$Thesis==i ]))) {
       TEMPDF<-subset(my.data, Thesis==i & Day==j)
       for (k in c(1:(nrow(TEMPDF)-1))) {
         for (l in c((k+1):nrow(TEMPDF))) {
           TARGET[tarrow,]<-cbind(i,j,(TEMPDF[k,3]-TEMPDF[l,3]), 
(TEMPDF[k,4]-TEMPDF[l,4]), (TEMPDF[k,5]-TEMPDF[l,5]))
           tarrow<-tarrow+1
         }
       }
     }
   }
   print(TARGET)
}

(Please note: my.data is your original data frame)

Kind regards,
Kimmo
#
Here is a more elegant solution using the plyr package.

my.data <- expand.grid(Thesis = 1:3, Day = c(0, 14), Run = 1:10)
my.data$A <- rpois(nrow(my.data), 10)
my.data$B <- rpois(nrow(my.data), 10)
my.data$C <- rpois(nrow(my.data), 10)

library(plyr)
ddply(my.data, .(Thesis, Day), function(x){
	Baseline <- unlist(x[1, c("A", "B", "C")])
	data.frame(t(apply(x[-1, c("A", "B", "C")], 1, function(z){z - Baseline})))
})

Best regards,

Thierry

----------------------------------------------------------------------------
ir. Thierry Onkelinx
Instituut voor natuur- en bosonderzoek
team Biometrie & Kwaliteitszorg
Gaverstraat 4
9500 Geraardsbergen
Belgium

Research Institute for Nature and Forest
team Biometrics & Quality Assurance
Gaverstraat 4
9500 Geraardsbergen
Belgium

tel. + 32 54/436 185
Thierry.Onkelinx at inbo.be
www.inbo.be

To call in the statistician after the experiment is done may be no more than asking him to perform a post-mortem examination: he may be able to say what the experiment died of.
~ Sir Ronald Aylmer Fisher

The plural of anecdote is not data.
~ Roger Brinner

The combination of some data and an aching desire for an answer does not ensure that a reasonable answer can be extracted from a given body of data.
~ John Tukey
#
Thank you all for the precious help.

Finally i could start the writing of a first part of my script, but now i
have a new question for you.

Need i to repeat the write.table portion for all the 15 lines or can i use a
"short cut"?

Example:

file.open <- "C:\\test.txt"
file.save <- "C:\\results.txt"

my.data <- read.table(file, header=T)

library(plyr)
write.table(ddply(my.data, .(Thesis, Day), function(x){
        Baseline <- unlist(x[1, c("A", "B", "C")])
        data.frame(t(apply(x[-1, c("A", "B", "C")], 1, function(z){z -
Baseline})))
}), file = file.save, row.names = F) 
write.table(ddply(my.data, .(Thesis, Day), function(x){
        Baseline <- unlist(x[2, c("A", "B", "C")])
        data.frame(t(apply(x[-1:-2, c("A", "B", "C")], 1, function(z){z -
Baseline})))
}), file = file.save, append = T, row.names = F, col.names = F) 
etc etc

Thanks again for the help.

Best regards,
Roberto.