[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