Jonas Josefsson
2010-Sep-27 16:34 UTC
[R] calculating mean and s.d. from a two-column table
I have a two-column table as follows where age is in the 1st column and the number of individuals is in the 2nd. age;no 1;21 2;31 3;9 4;12 5;6 Can I use mean() and sd() to calculate the mean and standard deviation from this or do I have to manually multiplicate 21*1+31*2 etc. / N?
Peter Langfelder
2010-Sep-27 16:43 UTC
[R] calculating mean and s.d. from a two-column table
On Mon, Sep 27, 2010 at 9:34 AM, Jonas Josefsson <jonas at runtimerecords.net> wrote:> I have a two-column table as follows where age is in the 1st column and the > number of individuals is in the 2nd. > > age;no > 1;21 > 2;31 > 3;9 > 4;12 > 5;6You can use the following trick: x = rep(age, no) This repeats age[1] no[1]-times, age[2] no[2]-times, etc... then use the usual mean and sd on x. Peter
Hi, Peter's suggestion is more general, but for just the weighted mean, there is a built in function you can use (I do not know of any basic weighted standard deviation or variance functions). dat <- data.frame(age = 1:5, no = c(21, 31, 9, 12, 6)) weighted.mean(x = dat$age, w = dat$no) Best regards, Josh On Mon, Sep 27, 2010 at 9:34 AM, Jonas Josefsson <jonas at runtimerecords.net> wrote:> I have a two-column table as follows where age is in the 1st column and the > number of individuals is in the 2nd. > > age;no > 1;21 > 2;31 > 3;9 > 4;12 > 5;6 > > > Can I use mean() and sd() to calculate the mean and standard deviation from > this or do I have to manually multiplicate 21*1+31*2 etc. / N? > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >-- Joshua Wiley Ph.D. Student, Health Psychology University of California, Los Angeles http://www.joshuawiley.com/
On 09/28/2010 02:34 AM, Jonas Josefsson wrote:> I have a two-column table as follows where age is in the 1st column and > the number of individuals is in the 2nd. > > age;no > 1;21 > 2;31 > 3;9 > 4;12 > 5;6 > > > Can I use mean() and sd() to calculate the mean and standard deviation > from this or do I have to manually multiplicate 21*1+31*2 etc. / N? >Hi Jonas, You can also use weighted.mean: weighted.mean(age,no) Jim