[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