[R] averaging X of specific Y (latitude)

David L Carlson dcarlson at tamu.edu
Tue Dec 18 16:17:44 CET 2012


You are wrong about my code. The entire excel spreadsheet table should be
loaded into R. Save As to a Tab delimited text file and use read.table() to
bring the data into R. 

----------------------------------------------
David L Carlson
Associate Professor of Anthropology
Texas A&M University
College Station, TX 77843-4352

> -----Original Message-----
> From: Elaine Kuo [mailto:elaine.kuo.tw at gmail.com]
> Sent: Tuesday, December 18, 2012 12:39 AM
> To: dcarlson at tamu.edu
> Cc: r-help at r-project.org
> 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 <dcarlson at 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.tw at gmail.com]
> > Sent: Monday, December 17, 2012 6:37 PM
> > To: dcarlson at tamu.edu
> > Cc: r-help at 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 <dcarlson at 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.tw at gmail.com]
> > Sent: Monday, December 17, 2012 5:56 AM
> > To: dcarlson at tamu.edu; r-help at 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.tw at 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 <dcarlson at tamu.edu>
> > >> To: 'Elaine Kuo' <elaine.kuo.tw at gmail.com>; r-help at r-project.org;
> > >> 'r-sig-geo' <r-sig-geo at 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-bounces at r-project.org [mailto:r-help-bounces at r-
> > >>> project.org] On Behalf Of Elaine Kuo
> > >>> Sent: Saturday, December 15, 2012 10:15 PM
> > >>> To: r-help at 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 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.
> > >>
> > >> ______________________________________________
> > >> 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.
> > >>
> > >>
> > >>
> > >
> > >       [[alternative HTML version deleted]]
> > >
> > > ______________________________________________
> > > 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.
> >
> >
> >
> >
> >




More information about the R-help mailing list