[R] Question: Beginner stuck in a R cycle

Gustaf Rydevik gustaf.rydevik at gmail.com
Tue Jul 8 18:12:21 CEST 2008


On Tue, Jul 8, 2008 at 3:18 PM, Daniela Ottaviani <d.ottaviani at yahoo.it> wrote:
> Dear All,
>
> I have a database of 200 observations named myD.
> In the dataframe there are a column named code (with codes varying from 1 to 77), a column named "prevalence" with some quantitative measurements are given and an column named Pr_mean, with no values.
>
> I would like to set a cycle to compute the average of prevalence values for each different code and store the averages under the empty field Pr_mean.
>
> This is what I wrote:
>
> # Set a cycle
> for (i in 1:nrow(myD)) {
> mycode = myD$code[i]
> mymean[i] = mean(prevalence)
> myD$Pr_mean[i] = mymean[i]
> }
>
> With the above cycle I am able to compute the average of all 200 observations which is then written in every cell.
> I understand that a condition is missing, that indicates that the average has to be computed amongst the observations showing  the same codes values.
>
> Could you please help me ?
>
>
> D.
>
>

The easiest thing to do is to use ?by:

myD<-data.frame(code=sample(letters[1:5],200,replace=T),value=rnorm(200))
by(myD$value,myD$code,mean)

but that won't get you the the group means in the empty column without
some more lines of code. Another way is to use ?lapply and ?unlist:

myD$Pr_mean<-unlist(lapply(as.character(myD$code),function(x)
mean(myD$value[myD$code==x])))


Regards,

Gustaf

--
Gustaf Rydevik, M.Sci.
tel: +46(0)703 051 451
address:Essingetorget 40,112 66 Stockholm, SE
skype:gustaf_rydevik



-- 
Gustaf Rydevik, M.Sci.
tel: +46(0)703 051 451
address:Essingetorget 40,112 66 Stockholm, SE
skype:gustaf_rydevik



More information about the R-help mailing list