Hi List,
Say I have a data.frame "DF" with 6 columns, 3 factors and 3
variables,
with different number of repetitions for each combination of factors.
I would like to build, for two given factors, a matrix per variable,
containing in each cell the mean or sd for a given couple of factors.
I have managed to get to the result I wanted step by step, but I would
like to have it in a function. I have not found what I was looking for
so I decided to try to write my own function, using aggregate( ) to
generate the mean values as a dataframe, and then display this as a
matrix.
I'd like it to be general enough so that I could use it in many cases.
>From what I have tried and understood, table( ) cannot do what I want
(no mean or sd ...) neither does xtabs( ), i.e. asking for a formula not
a function to passed as an argument ...
My final aim would be to plot this with persp( ), and it seems that
persp( ) must be fed with 2 dimensional arrays ...
Below is what I have tried to write, but it is not working.
It might be awkward, but I think it can work ... I think it is a problem
about correctly receiving and passing arguments in the different
function calls.
Do you think there would be a smarter way of doing this ? Or can you see
what is going wrong with this ?
Any advice will be welcome
Pascal Boisson
matrixation<-function(DF, var, factorlist, FUN, condition)
## DF is the original dataframe with raw results from my experiments
## var is the var that I want to print
## eg. DF$var1
## factorlist is a list of the two factor I want to mean against (but
I'm noot sure List is the best form for this argument),
## eg. list(DF$fact1, DF$fact2)
## FUN would be the function I want to use during aggregation,
## eg. Mean( )
## condition would be a condition for building a subset
## eg. DF$fact3==1
{
sDF <- subset(DF, condition)
A <- aggregate(sDF, factorlist, FUN)
M <- matrix(data=NA, nrow = length(levels(factorlist[[1]])),
ncol = length(levels(factorlist[[2]])),
dimnames list(levels(factorlist[[1]]),levels(factorlist[[2]]) )
)
for (i in 1:length(A[,1]))
{
tPhii <- A$Group.1[i]
tAppari <- A$Group.2[i]
M[tPhii, tAppari] <- A$pest_max_number[i]
}
return(M)
}
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
DISCLAIMER:\
\ This email is from the Scottish Crop Researc...{{dropped}}