|
Dear all,
I have a question on applying a function to the data according to factor levels. For example, for the data below, what is the best way to apply a function to "values" according to different levels of "samples" (1,2,3,4,5)? values ind sample 1 0.03325 1 1 2 0.03305 1 1 3 0.03185 1 1 4 0.03515 1 1 5 0.03375 1 1 6 0.01180 1 2 7 0.01850 1 3 8 0.02915 1 4 9 0.06200 1 5 10 0.03230 2 1 11 0.03345 2 1 12 0.03385 2 1 13 0.03605 2 1 14 0.03225 2 1 15 0.01145 2 2 16 0.01805 2 3 17 0.02950 2 4 18 0.05995 2 5 19 0.03425 3 1 20 0.03575 3 1 21 0.03535 3 1 22 0.03380 3 1 23 0.03410 3 1 24 0.01050 3 2 25 0.01735 3 3 26 0.03140 3 4 27 0.06170 3 5 28 0.03430 4 1 29 0.03185 4 1 30 0.03165 4 1 31 0.03380 4 1 32 0.03235 4 1 33 0.01100 4 2 34 0.01825 4 3 35 0.03045 4 4 36 0.06060 4 5 37 0.03280 5 1 38 0.03350 5 1 39 0.03215 5 1 40 0.03545 5 1 41 0.03285 5 1 42 0.01085 5 2 43 0.01660 5 3 44 0.03060 5 4 45 0.06605 5 5 Thank you. Hannah [[alternative HTML version deleted]] ______________________________________________ [hidden email] 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. |
|
?tapply
---------------------------------------------- David L Carlson Associate Professor of Anthropology Texas A&M University College Station, TX 77843-4352 > -----Original Message----- > From: [hidden email] [mailto:r-help-bounces@r- > project.org] On Behalf Of li li > Sent: Thursday, August 16, 2012 8:31 PM > To: r-help > Subject: [R] Apply a function according to factor levels. > > Dear all, > I have a question on applying a function to the data according to > factor > levels. > For example, for the data below, what is the best way to apply a > function > to > "values" according to different levels of "samples" (1,2,3,4,5)? > values ind sample > 1 0.03325 1 1 > 2 0.03305 1 1 > 3 0.03185 1 1 > 4 0.03515 1 1 > 5 0.03375 1 1 > 6 0.01180 1 2 > 7 0.01850 1 3 > 8 0.02915 1 4 > 9 0.06200 1 5 > 10 0.03230 2 1 > 11 0.03345 2 1 > 12 0.03385 2 1 > 13 0.03605 2 1 > 14 0.03225 2 1 > 15 0.01145 2 2 > 16 0.01805 2 3 > 17 0.02950 2 4 > 18 0.05995 2 5 > 19 0.03425 3 1 > 20 0.03575 3 1 > 21 0.03535 3 1 > 22 0.03380 3 1 > 23 0.03410 3 1 > 24 0.01050 3 2 > 25 0.01735 3 3 > 26 0.03140 3 4 > 27 0.06170 3 5 > 28 0.03430 4 1 > 29 0.03185 4 1 > 30 0.03165 4 1 > 31 0.03380 4 1 > 32 0.03235 4 1 > 33 0.01100 4 2 > 34 0.01825 4 3 > 35 0.03045 4 4 > 36 0.06060 4 5 > 37 0.03280 5 1 > 38 0.03350 5 1 > 39 0.03215 5 1 > 40 0.03545 5 1 > 41 0.03285 5 1 > 42 0.01085 5 2 > 43 0.01660 5 3 > 44 0.03060 5 4 > 45 0.06605 5 5 > > > Thank you. > Hannah > > [[alternative HTML version deleted]] > > ______________________________________________ > [hidden email] 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. ______________________________________________ [hidden email] 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. |
|
Hello,
Or ?aggregate, depending on the wanted output. With the dataset provided by the op, apply function mean. dat <- read.table(text=" values ind sample 1 0.03325 1 1 2 0.03305 1 1 3 0.03185 1 1 [...etc...] 44 0.03060 5 4 45 0.06605 5 5 ", header = TRUE) tapply(dat$values, dat$sample, mean) # named vector 1 2 3 4 5 0.033556 0.011120 0.017750 0.030220 0.062060 aggregate(values ~ sample, data = dat, mean) # data.frame sample values 1 1 0.033556 2 2 0.011120 3 3 0.017750 4 4 0.030220 5 5 0.062060 Hope this helps, Rui Barradas Em 17-08-2012 02:41, David L Carlson escreveu: > ?tapply > > ---------------------------------------------- > David L Carlson > Associate Professor of Anthropology > Texas A&M University > College Station, TX 77843-4352 > > >> -----Original Message----- >> From: [hidden email] [mailto:r-help-bounces@r- >> project.org] On Behalf Of li li >> Sent: Thursday, August 16, 2012 8:31 PM >> To: r-help >> Subject: [R] Apply a function according to factor levels. >> >> Dear all, >> I have a question on applying a function to the data according to >> factor >> levels. >> For example, for the data below, what is the best way to apply a >> function >> to >> "values" according to different levels of "samples" (1,2,3,4,5)? >> values ind sample >> 1 0.03325 1 1 >> 2 0.03305 1 1 >> 3 0.03185 1 1 >> 4 0.03515 1 1 >> 5 0.03375 1 1 >> 6 0.01180 1 2 >> 7 0.01850 1 3 >> 8 0.02915 1 4 >> 9 0.06200 1 5 >> 10 0.03230 2 1 >> 11 0.03345 2 1 >> 12 0.03385 2 1 >> 13 0.03605 2 1 >> 14 0.03225 2 1 >> 15 0.01145 2 2 >> 16 0.01805 2 3 >> 17 0.02950 2 4 >> 18 0.05995 2 5 >> 19 0.03425 3 1 >> 20 0.03575 3 1 >> 21 0.03535 3 1 >> 22 0.03380 3 1 >> 23 0.03410 3 1 >> 24 0.01050 3 2 >> 25 0.01735 3 3 >> 26 0.03140 3 4 >> 27 0.06170 3 5 >> 28 0.03430 4 1 >> 29 0.03185 4 1 >> 30 0.03165 4 1 >> 31 0.03380 4 1 >> 32 0.03235 4 1 >> 33 0.01100 4 2 >> 34 0.01825 4 3 >> 35 0.03045 4 4 >> 36 0.06060 4 5 >> 37 0.03280 5 1 >> 38 0.03350 5 1 >> 39 0.03215 5 1 >> 40 0.03545 5 1 >> 41 0.03285 5 1 >> 42 0.01085 5 2 >> 43 0.01660 5 3 >> 44 0.03060 5 4 >> 45 0.06605 5 5 >> >> >> Thank you. >> Hannah >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> [hidden email] 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. > ______________________________________________ > [hidden email] 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. ______________________________________________ [hidden email] 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. |
|
In reply to this post by li li-13
Hi,
Try this: dat1<-read.table(text=" no. values ind sample 1 0.03325 1 1 2 0.03305 1 1 3 0.03185 1 1 4 0.03515 1 1 ------------------------- ------------------------- 42 0.01085 5 2 43 0.01660 5 3 44 0.03060 5 4 45 0.06605 5 5 ",sep="",header=TRUE) dat2<-within(dat1,{sample<-as.factor(sample)}) ddply(dat2,.(sample), function(x) mean(x$values)) # sample V1 #1 1 0.033556 #2 2 0.011120 #3 3 0.017750 #4 4 0.030220 #5 5 0.062060 A.K. ----- Original Message ----- From: li li <[hidden email]> To: r-help <[hidden email]> Cc: Sent: Thursday, August 16, 2012 9:31 PM Subject: [R] Apply a function according to factor levels. Dear all, I have a question on applying a function to the data according to factor levels. For example, for the data below, what is the best way to apply a function to "values" according to different levels of "samples" (1,2,3,4,5)? values ind sample 1 0.03325 1 1 2 0.03305 1 1 3 0.03185 1 1 4 0.03515 1 1 5 0.03375 1 1 6 0.01180 1 2 7 0.01850 1 3 8 0.02915 1 4 9 0.06200 1 5 10 0.03230 2 1 11 0.03345 2 1 12 0.03385 2 1 13 0.03605 2 1 14 0.03225 2 1 15 0.01145 2 2 16 0.01805 2 3 17 0.02950 2 4 18 0.05995 2 5 19 0.03425 3 1 20 0.03575 3 1 21 0.03535 3 1 22 0.03380 3 1 23 0.03410 3 1 24 0.01050 3 2 25 0.01735 3 3 26 0.03140 3 4 27 0.06170 3 5 28 0.03430 4 1 29 0.03185 4 1 30 0.03165 4 1 31 0.03380 4 1 32 0.03235 4 1 33 0.01100 4 2 34 0.01825 4 3 35 0.03045 4 4 36 0.06060 4 5 37 0.03280 5 1 38 0.03350 5 1 39 0.03215 5 1 40 0.03545 5 1 41 0.03285 5 1 42 0.01085 5 2 43 0.01660 5 3 44 0.03060 5 4 45 0.06605 5 5 Thank you. Hannah [[alternative HTML version deleted]] ______________________________________________ [hidden email] 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. ______________________________________________ [hidden email] 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. |
|
Got it. Thanks so much.
Hannah 2012/8/16 arun <[hidden email]> > Hi, > Try this: > dat1<-read.table(text=" > no. values ind sample > 1 0.03325 1 1 > 2 0.03305 1 1 > 3 0.03185 1 1 > 4 0.03515 1 1 > > ------------------------- > ------------------------- > 42 0.01085 5 2 > 43 0.01660 5 3 > 44 0.03060 5 4 > 45 0.06605 5 5 > ",sep="",header=TRUE) > dat2<-within(dat1,{sample<-as.factor(sample)}) > ddply(dat2,.(sample), function(x) mean(x$values)) > # sample V1 > #1 1 0.033556 > #2 2 0.011120 > #3 3 0.017750 > #4 4 0.030220 > #5 5 0.062060 > A.K. > > ----- Original Message ----- > From: li li <[hidden email]> > To: r-help <[hidden email]> > Cc: > Sent: Thursday, August 16, 2012 9:31 PM > Subject: [R] Apply a function according to factor levels. > > Dear all, > I have a question on applying a function to the data according to factor > levels. > For example, for the data below, what is the best way to apply a function > to > "values" according to different levels of "samples" (1,2,3,4,5)? > values ind sample > 1 0.03325 1 1 > 2 0.03305 1 1 > 3 0.03185 1 1 > 4 0.03515 1 1 > 5 0.03375 1 1 > 6 0.01180 1 2 > 7 0.01850 1 3 > 8 0.02915 1 4 > 9 0.06200 1 5 > 10 0.03230 2 1 > 11 0.03345 2 1 > 12 0.03385 2 1 > 13 0.03605 2 1 > 14 0.03225 2 1 > 15 0.01145 2 2 > 16 0.01805 2 3 > 17 0.02950 2 4 > 18 0.05995 2 5 > 19 0.03425 3 1 > 20 0.03575 3 1 > 21 0.03535 3 1 > 22 0.03380 3 1 > 23 0.03410 3 1 > 24 0.01050 3 2 > 25 0.01735 3 3 > 26 0.03140 3 4 > 27 0.06170 3 5 > 28 0.03430 4 1 > 29 0.03185 4 1 > 30 0.03165 4 1 > 31 0.03380 4 1 > 32 0.03235 4 1 > 33 0.01100 4 2 > 34 0.01825 4 3 > 35 0.03045 4 4 > 36 0.06060 4 5 > 37 0.03280 5 1 > 38 0.03350 5 1 > 39 0.03215 5 1 > 40 0.03545 5 1 > 41 0.03285 5 1 > 42 0.01085 5 2 > 43 0.01660 5 3 > 44 0.03060 5 4 > 45 0.06605 5 5 > > > Thank you. > Hannah > > [[alternative HTML version deleted]] > > ______________________________________________ > [hidden email] mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html<http://www.r-project.org/posting-guide.html> > and provide commented, minimal, self-contained, reproducible code. > > [[alternative HTML version deleted]] ______________________________________________ [hidden email] 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. |
| Powered by Nabble | Edit this page |
