[R] Printing 'k' levels of factors 'n' times each, but 'n' is unequal for all levels ?
A Singh
Aditi.Singh at bristol.ac.uk
Tue Dec 8 15:56:47 CET 2009
Dear List,
I need to print out each of 'k' levels of a factor 'n' times each, where
'n' is the number of elements belonging to each factor.
I know that this can normally be done using the gl() command,
but in my case, each level 'k' has an unequal number of elements.
Example with code is as below:
vc<-read.table("P:\\Transit\\CORRECT
files\\Everything-newest.csv",header=T, sep=",", dec=".", na.strings=NA,
strip.white=T)
vcdf<-data.frame(vc)
tempdf<-data.frame(cbind(vcdf[,1:3], vcdf[,429]))
newtemp<-na.exclude(tempdf)
newtemp[,2]<-factor(newtemp[,2])
groupmean<-tapply(newtemp[,4], newtemp[,2], mean)
newmark<-factor(groupmean, exclude=(groupmean==0 | groupmean==1))
newmark
This is what the output is (going up to 61 levels)
1 2 3 4
<NA> 0.142857142857143 0.444444444444444 <NA>
5 6 8 9
0.3333333333 0.09090909090 0.3846153846 <NA>
............. 61
<NA>
The variable 'groupmean' calculates means for newtemp[,4] for 61 levels
(k). Levels are specified in newtemp[,2].
I now want to be able to print out each value of 'groupmean' as many times
as there are elements in the group for which each is calculated.
So for E.g. if level 1 of newtemp[,2] has about 15 elements, <NA> should be
printed 15 times, level 2 = 12 times 0.1428, and so on.
Is there a way of specifying that a list needs to be populated with
replicates of groupmeans based on values got from newtemp[,2]?
I just can't seem to figure this out by myself.
Many thanks for your help.
Aditi
----------------------
A Singh
Aditi.Singh at bristol.ac.uk
School of Biological Sciences
University of Bristol
More information about the R-help
mailing list