HI Elaine, Regarding the second part of your question, use ?cut() dta$Lat<-floor(dta$Latitude) res<-aggregate(Range~cut(dta$Lat,breaks=c(6,10,15,20),label=c("6-10","11-15","16-20")),dta,mean)
colnames(res)<-c("Rangesize","Mean") res # Rangesize Mean #1 6-10 675.1920 #2 11-15 851.5500 #3 16-20 728.4625 A.K. ----- Original Message ----- From: Elaine Kuo <elaine.kuo...@gmail.com> To: dcarl...@tamu.edu Cc: r-help@r-project.org Sent: Tuesday, December 18, 2012 1:39 AM Subject: Re: [R] averaging X of specific Y (latitude) Hello David, Thank you for the response. I changed the e-mail format to text via gmail setting. 1. the butterfly names You are right that the butterfly names are stored in the original data. However, in your code, it is necessary to input the names for the command structure. The method I used to input is 1. display them in the original excel file, as one column with 11 rows. 2. add commas in a column, right to the name column. 3. copy the columns of butterfly names and commas, then pasting them in the wordpad. 4. copy the wordpad text with butterfly names and commas into your code Since the method sounds tedious, particularly when the number of butterfly names increases over 11, I would like to ask for less time-consuming method to elicit butterfly names as factor. (Maybe using some R command I do not know) 2. Latitude degree Thank you for helping generate the mean of range size per latitudinal degree, using the code:\ Bfly <- aggregate(Range~floor(Latitude), dta, mean) Please kindly advise if it is possible to calculate the mean of range size per 5 latitudinal degrees, such as 6-10, 11-15, or 16-20 latitudinal degrees. Thank you again. Elaine > dta <- structure(list(Species = structure(1:11, .Label = c("Butterfly A1", + "Butterfly A2", "Butterfly A3", "Butterfly A4", "Butterfly B1", + "Butterfly B2", "Butterfly B3", "Butterfly B4", "Butterfly B5", + "Butterfly C1", "Butterfly C2"), class = "factor"), Range = c(130.5, + 450.68, 1102.38, 893.34, 820.2, 872.2, 488.2, 620.11, 982.78, + 720.32, 912.2), Latitude = c(9.45, 10.2, 9.3, 16.4, 10.54, 10.87, + 16.79, 18.3, 12.98, 12.67, 18.07)), .Names = c("Species", "Range", + "Latitude"), class = "data.frame", row.names = c(NA, -11L)) > Bfly <- aggregate(Range~Species+floor(Latitude), dta, mean) > colnames(Bfly) <- c("Species", "Latitude", "Mean") > Bfly Species Latitude Mean 1 Butterfly A1 9 130.50 2 Butterfly A3 9 1102.38 3 Butterfly A2 10 450.68 4 Butterfly B1 10 820.20 5 Butterfly B2 10 872.20 6 Butterfly B5 12 982.78 7 Butterfly C1 12 720.32 8 Butterfly A4 16 893.34 9 Butterfly B3 16 488.20 10 Butterfly B4 18 620.11 11 Butterfly C2 18 912.20 ---------------------------------------------- David L Carlson Associate Professor of Anthropology Texas A&M University College Station, TX 77843-4352 On Tue, Dec 18, 2012 at 11:07 AM, David L Carlson <dcarl...@tamu.edu> wrote: > > You should change your email format to text (you keep sending messages in > html format). > > Where are the butterfly names? Are they not in your original data? Create > your data.frame from the original data (which presumably has the butterfly > names in it already). Then use dput() if you need to email the data to > r-help. You cannot compute statistics or graphics from the result of the > dput() function. > > Yes you can produce a barplot. Type ?barplot to get the instructions. > > ---------------------------------------------- > David L Carlson > Associate Professor of Anthropology > Texas A&M University > College Station, TX 77843-4352 > > > From: Elaine Kuo [mailto:elaine.kuo...@gmail.com] > Sent: Monday, December 17, 2012 6:37 PM > To: dcarl...@tamu.edu > Cc: r-help@r-project.org > Subject: Re: [R] averaging X of specific Y (latitude) > > Thank you, David. > > Now I know how to use dput. > > Two more questions conjured up when running the code: > 1. If there are about 500 species of butterflies, > please kindly advise if it is possible to input the butterfly names (for > .Label) using code, > instead of keying in them one by one. > > 2. Aggregrate command > Last time we produced the mean of range sizes. > Please kindly advise if it is possible to produce barplot showing the > value range, instead of mean. > > Thank you > Elaine > > code > dta <- structure(list(Species = structure(1:11, .Label = c("Butterfly > >> A1", > >> > >> + "Butterfly A2", "Butterfly A3", "Butterfly A4", "Butterfly B1", > >> + "Butterfly B2", "Butterfly B3", "Butterfly B4", "Butterfly B5", > >> + "Butterfly C1", "Butterfly C2"), class = "factor"), Range = c(130.5, > >> + 450.68, 1102.38, 893.34, 820.2, 872.2, 488.2, 620.11, 982.78, > >> + 720.32, 912.2), Latitude = c(9.45, 10.2, 9.3, 16.4, 10.54, 10.87, > >> + 16.79, 18.3, 12.98, 12.67, 18.07)), .Names = c("Species", "Range", > >> + "Latitude"), class = "data.frame", row.names = c(NA, -11L)) > >>> Bfly <- aggregate(Range~Species+floor(Latitude), dta, mean) > >>> colnames(Bfly) <- c("Species", "Latitude", "Mean") > >>> Bfly > >> Species Latitude Mean > >> 1 Butterfly A1 9 130.50 > >> 2 Butterfly A3 9 1102.38 > >> 3 Butterfly A2 10 450.68 > >> 4 Butterfly B1 10 820.20 > >> 5 Butterfly B2 10 872.20 > >> 6 Butterfly B5 12 982.78 > >> 7 Butterfly C1 12 720.32 > >> 8 Butterfly A4 16 893.34 > >> 9 Butterfly B3 16 488.20 > >> 10 Butterfly B4 18 620.11 > >> 11 Butterfly C2 18 912.20 > >> > On Tue, Dec 18, 2012 at 12:27 AM, David L Carlson <dcarl...@tamu.edu> wrote: > You are only using dput to create a version of your data that you can post > in your email along with your question. You do not use it in your analysis. > You originally posted a table of your data that requires extra steps for us > to convert into a useable form so I suggested you use dput in the future to > create a version of the data that is easy for r-help subscribers to use in > order to recreate your data. That makes it easier to answer your question. > > ---------------------------------------------- > David L Carlson > Associate Professor of Anthropology > Texas A&M University > College Station, TX 77843-4352 > > From: Elaine Kuo [mailto:elaine.kuo...@gmail.com] > Sent: Monday, December 17, 2012 5:56 AM > To: dcarl...@tamu.edu; r-help@r-project.org > > Subject: Re: [R] averaging X of specific Y (latitude) > > Another question (I am sure it is the last one tentatively): > > After creating a text.file using dput (let's name the created file > "datam"), > please kindly advise how to use the text file in writing the code using > "structure" like below. > > Thank you. > > code > dta <- structure(list(Species = structure(1:11, .Label = c("Butterfly A1", > > + "Butterfly A2", "Butterfly A3", "Butterfly A4", "Butterfly B1", > + "Butterfly B2", "Butterfly B3", "Butterfly B4", "Butterfly B5", > + "Butterfly C1", "Butterfly C2"), class = "factor"), Range = c(130.5, > + 450.68, 1102.38, 893.34, 820.2, 872.2, 488.2, 620.11, 982.78, > + 720.32, 912.2), Latitude = c(9.45, 10.2, 9.3, 16.4, 10.54, 10.87, > + 16.79, 18.3, 12.98, 12.67, 18.07)), .Names = c("Species", "Range", > + "Latitude"), class = "data.frame", row.names = c(NA, -11L))) > > Elaine > > > On Mon, Dec 17, 2012 at 7:40 PM, Elaine Kuo <elaine.kuo...@gmail.com> wrote: > One more question: > > Please kindly explain > why it is written as "row.names = c(NA, -11L))." > (in the code below) > > I am unsure why it is "negative" 11. > Thank you . > > Elaine > > code > > dta <- structure(list(Species = structure(1:11, .Label = c("Butterfly A1", > > + "Butterfly A2", "Butterfly A3", "Butterfly A4", "Butterfly B1", > + "Butterfly B2", "Butterfly B3", "Butterfly B4", "Butterfly B5", > + "Butterfly C1", "Butterfly C2"), class = "factor"), Range = c(130.5, > + 450.68, 1102.38, 893.34, 820.2, 872.2, 488.2, 620.11, 982.78, > + 720.32, 912.2), Latitude = c(9.45, 10.2, 9.3, 16.4, 10.54, 10.87, > + 16.79, 18.3, 12.98, 12.67, 18.07)), .Names = c("Species", "Range", > + "Latitude"), class = "data.frame", row.names = c(NA, -11L))) > > > >> > >> > >> ----- Original Message ----- > >> From: David L Carlson <dcarl...@tamu.edu> > >> To: 'Elaine Kuo' <elaine.kuo...@gmail.com>; r-help@r-project.org; > >> 'r-sig-geo' <r-sig-...@stat.math.ethz.ch> > >> Cc: > >> Sent: Sunday, December 16, 2012 11:32 AM > >> Subject: Re: [R] averaging X of specific Y (latitude) > >> > >> It is better to use dput() in R to create a text version of your data for > >> us > >> to work with. The aggregate command below gives you the mean ranges by > >> butterfly species and latititude and saves the result as Bfly. The > >> colnames() command simply renames the columns: > >> > >>> dta <- structure(list(Species = structure(1:11, .Label = c("Butterfly > >> A1", > >> > >> + "Butterfly A2", "Butterfly A3", "Butterfly A4", "Butterfly B1", > >> + "Butterfly B2", "Butterfly B3", "Butterfly B4", "Butterfly B5", > >> + "Butterfly C1", "Butterfly C2"), class = "factor"), Range = c(130.5, > >> + 450.68, 1102.38, 893.34, 820.2, 872.2, 488.2, 620.11, 982.78, > >> + 720.32, 912.2), Latitude = c(9.45, 10.2, 9.3, 16.4, 10.54, 10.87, > >> + 16.79, 18.3, 12.98, 12.67, 18.07)), .Names = c("Species", "Range", > >> + "Latitude"), class = "data.frame", row.names = c(NA, -11L)) > >>> Bfly <- aggregate(Range~Species+floor(Latitude), dta, mean) > >>> colnames(Bfly) <- c("Species", "Latitude", "Mean") > >>> Bfly > >> Species Latitude Mean > >> 1 Butterfly A1 9 130.50 > >> 2 Butterfly A3 9 1102.38 > >> 3 Butterfly A2 10 450.68 > >> 4 Butterfly B1 10 820.20 > >> 5 Butterfly B2 10 872.20 > >> 6 Butterfly B5 12 982.78 > >> 7 Butterfly C1 12 720.32 > >> 8 Butterfly A4 16 893.34 > >> 9 Butterfly B3 16 488.20 > >> 10 Butterfly B4 18 620.11 > >> 11 Butterfly C2 18 912.20 > >> > >> ---------------------------------------------- > >> David L Carlson > >> Associate Professor of Anthropology > >> Texas A&M University > >> College Station, TX 77843-4352 > >> > >>> -----Original Message----- > >>> From: r-help-boun...@r-project.org [mailto:r-help-bounces@r- > >>> project.org] On Behalf Of Elaine Kuo > >>> Sent: Saturday, December 15, 2012 10:15 PM > >>> To: r-help@r-project.org; r-sig-geo > >>> Subject: [R] averaging X of specific Y (latitude) > >>> > >>> Hello > >>> > >>> > >>> > >>> I have a table describing butterfly range traits. > >>> > >>> It is composed of three columns as below > >>> > >>> > >>> > >>> Species name range size (X) latitude of range midpoint (Y) > >>> > >>> > >>> > >>> There are 11 kinds of butterflies. > >>> > >>> Each has its range size, and the latitude of each range midpoint ranges > >>> from 9 to 19. > >>> > >>> I would like to have the average range size of every degree of > >>> latitude. > >>> > >>> For example, the average range size of latitude degree 10 (10.0-10.99: > >>> Butterfly A2, B1, B2) > >>> > >>> Please kindly help with R code to calculate the average values. > >>> > >>> Thank you. > >>> > >>> > >>> Elaine > >>> > >>> > >>> The details are as followed. > >>> > >>> > >>> > >>> Butterfly A1 130.5 9.45 > >>> > >>> Butterfly A2 450.68 10.2 > >>> > >>> Butterfly A3 1102.38 9.3 > >>> > >>> Butterfly A4 893.34 16.4 > >>> > >>> Butterfly B1 820.2 10.54 > >>> > >>> Butterfly B2 872.2 10.87 > >>> > >>> Butterfly B3 488.2 16.79 > >>> > >>> Butterfly B4 620.11 18.3 > >>> > >>> Butterfly B5 982.78 12.98 > >>> > >>> Butterfly C1 720.32 12.67 > >>> > >>> Butterfly C2 912.2 18.07 > >>> > >>> [[alternative HTML version deleted]] > >>> > >>> ______________________________________________ > >>> R-help@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. > >> > >> ______________________________________________ > >> R-help@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. > >> > >> > >> > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > R-help@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. > > > > > ______________________________________________ R-help@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. ______________________________________________ R-help@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.