-1

I'm new to coding so it may be kind of a stupid question. The thing is, I have this data frame of centrum length in diffrent species for each vertebrae, and for a homework I have to find the cv of the centrum length for each species, and I could do it manually but of course it'll take a long time so I figured that there must be a way to do it with code. I already did a boxplot of the data so I have an idea of which species could have a bigger cv than others, but still I need the specific values. I'll leave at the end the data frame so you get an idea of it's structure and I'll also attach the graph and the code just in case. Thx in advance.

library(ggplot2)

ggplot(comp.lc, aes( centrum_length, y=Species)) + 
  geom_boxplot(fill = "#e0f3db", color = "#43a2ca") + 
  labs(title= "Tamaño de la centra en diferentes especies de tetrapodos", x="Largo de la centra", y= "Especies") + theme(legend.position = "none") + 
  stat_summary(fun=mean, geom="point", shape=20, size=2, color="#2ca25f", fill="#2ca25f")

centrum length in different tetrapod species

Data frame in dput format:

structure(list(species = c("Alligator_missippiensis", "Alligator_missippiensis", 
"Alligator_missippiensis", "Alligator_missippiensis", "Alligator_missippiensis", 
"Alligator_missippiensis", "Alligator_missippiensis", "Alligator_missippiensis", 
"Alligator_missippiensis", "Alligator_missippiensis", "Alligator_missippiensis", 
"Alligator_missippiensis", "Alligator_missippiensis", "Alligator_missippiensis", 
"Alligator_missippiensis", "Alligator_missippiensis", "Alligator_missippiensis", 
"Alligator_missippiensis", "Alligator_missippiensis", "Alligator_missippiensis", 
"Alligator_missippiensis", "Alligator_missippiensis", "Alouatta_palliata", 
"Alouatta_palliata", "Alouatta_palliata", "Alouatta_palliata", 
"Alouatta_palliata", "Alouatta_palliata", "Alouatta_palliata", 
"Alouatta_palliata", "Alouatta_palliata", "Alouatta_palliata", 
"Alouatta_palliata", "Alouatta_palliata", "Alouatta_palliata", 
"Alouatta_palliata", "Alouatta_palliata", "Alouatta_palliata", 
"Alouatta_palliata", "Alouatta_palliata", "Alouatta_palliata", 
"Alouatta_palliata", "Alouatta_palliata", "Alouatta_palliata", 
"Alouatta_palliata", "Alouatta_palliata", "Alouatta_palliata", 
"Antilocapra_americana", "Antilocapra_americana", "Antilocapra_americana", 
"Antilocapra_americana", "Antilocapra_americana", "Antilocapra_americana", 
"Antilocapra_americana", "Antilocapra_americana", "Antilocapra_americana", 
"Antilocapra_americana", "Antilocapra_americana", "Antilocapra_americana", 
"Antilocapra_americana", "Antilocapra_americana", "Antilocapra_americana", 
"Antilocapra_americana", "Antilocapra_americana", "Antilocapra_americana", 
"Antilocapra_americana", "Antilocapra_americana", "Antilocapra_americana", 
"Antilocapra_americana", "Antilocapra_americana", "Antilocapra_americana", 
"Castor_canadensis", "Castor_canadensis", "Castor_canadensis", 
"Castor_canadensis", "Castor_canadensis", "Castor_canadensis", 
"Castor_canadensis", "Castor_canadensis", "Castor_canadensis", 
"Castor_canadensis", "Castor_canadensis", "Castor_canadensis", 
"Castor_canadensis", "Castor_canadensis", "Castor_canadensis", 
"Castor_canadensis", "Castor_canadensis", "Castor_canadensis", 
"Castor_canadensis", "Castor_canadensis", "Castor_canadensis", 
"Castor_canadensis", "Castor_canadensis", "Castor_canadensis", 
"Corucia_zebrata", "Corucia_zebrata", "Corucia_zebrata", "Corucia_zebrata", 
"Corucia_zebrata", "Corucia_zebrata", "Corucia_zebrata", "Corucia_zebrata", 
"Corucia_zebrata", "Corucia_zebrata", "Corucia_zebrata", "Corucia_zebrata", 
"Corucia_zebrata", "Corucia_zebrata", "Corucia_zebrata", "Corucia_zebrata", 
"Corucia_zebrata", "Corucia_zebrata", "Corucia_zebrata", "Corucia_zebrata", 
"Corucia_zebrata", "Corucia_zebrata", "Corucia_zebrata", "Corucia_zebrata", 
"Corucia_zebrata", "Didelphis_virginiana", "Didelphis_virginiana", 
"Didelphis_virginiana", "Didelphis_virginiana", "Didelphis_virginiana", 
"Didelphis_virginiana", "Didelphis_virginiana", "Didelphis_virginiana", 
"Didelphis_virginiana", "Didelphis_virginiana", "Didelphis_virginiana", 
"Didelphis_virginiana", "Didelphis_virginiana", "Didelphis_virginiana", 
"Didelphis_virginiana", "Didelphis_virginiana", "Didelphis_virginiana", 
"Didelphis_virginiana", "Didelphis_virginiana", "Didelphis_virginiana", 
"Didelphis_virginiana", "Didelphis_virginiana", "Didelphis_virginiana", 
"Didelphis_virginiana", "Didelphis_virginiana", "Equus_caballus", 
"Equus_caballus", "Equus_caballus", "Equus_caballus", "Equus_caballus", 
"Equus_caballus", "Equus_caballus", "Equus_caballus", "Equus_caballus", 
"Equus_caballus", "Equus_caballus", "Equus_caballus", "Equus_caballus", 
"Equus_caballus", "Equus_caballus", "Equus_caballus", "Equus_caballus", 
"Equus_caballus", "Equus_caballus", "Equus_caballus", "Equus_caballus", 
"Equus_caballus", "Equus_caballus", "Equus_caballus", "Equus_caballus", 
"Equus_caballus", "Equus_caballus", "Equus_caballus", "Equus_caballus", 
"Felis_catus", "Felis_catus", "Felis_catus", "Felis_catus", "Felis_catus", 
"Felis_catus", "Felis_catus", "Felis_catus", "Felis_catus", "Felis_catus", 
"Felis_catus", "Felis_catus", "Felis_catus", "Felis_catus", "Felis_catus", 
"Felis_catus", "Felis_catus", "Felis_catus", "Felis_catus", "Felis_catus", 
"Felis_catus", "Felis_catus", "Felis_catus", "Felis_catus", "Felis_catus", 
"Lepus_americanus", "Lepus_americanus", "Lepus_americanus", "Lepus_americanus", 
"Lepus_americanus", "Lepus_americanus", "Lepus_americanus", "Lepus_americanus", 
"Lepus_americanus", "Lepus_americanus", "Lepus_americanus", "Lepus_americanus", 
"Lepus_americanus", "Lepus_americanus", "Lepus_americanus", "Lepus_americanus", 
"Lepus_americanus", "Lepus_americanus", "Lepus_americanus", "Lepus_americanus", 
"Lepus_americanus", "Lepus_americanus", "Lepus_americanus", "Sus scrofa", 
"Sus scrofa", "Sus scrofa", "Sus scrofa", "Sus scrofa", "Sus scrofa", 
"Sus scrofa", "Sus scrofa", "Sus scrofa", "Sus scrofa", "Sus scrofa", 
"Sus scrofa", "Sus scrofa", "Sus scrofa", "Sus scrofa", "Sus scrofa", 
"Sus scrofa", "Sus scrofa", "Sus scrofa", "Sus scrofa", "Sus scrofa", 
"Sus scrofa", "Sus scrofa", "Sus scrofa", "Tamandua_tetradactyla", 
"Tamandua_tetradactyla", "Tamandua_tetradactyla", "Tamandua_tetradactyla", 
"Tamandua_tetradactyla", "Tamandua_tetradactyla", "Tamandua_tetradactyla", 
"Tamandua_tetradactyla", "Tamandua_tetradactyla", "Tamandua_tetradactyla", 
"Tamandua_tetradactyla", "Tamandua_tetradactyla", "Tamandua_tetradactyla", 
"Tamandua_tetradactyla", "Tamandua_tetradactyla", "Tamandua_tetradactyla", 
"Tamandua_tetradactyla", "Tamandua_tetradactyla", "Tamandua_tetradactyla", 
"Tamandua_tetradactyla", "Tamandua_tetradactyla", "Tamandua_tetradactyla", 
"Tamandua_tetradactyla", "Tamandua_tetradactyla", "Tamandua_tetradactyla", 
"Tapirus_bairdii", "Tapirus_bairdii", "Tapirus_bairdii", "Tapirus_bairdii", 
"Tapirus_bairdii", "Tapirus_bairdii", "Tapirus_bairdii", "Tapirus_bairdii", 
"Tapirus_bairdii", "Tapirus_bairdii", "Tapirus_bairdii", "Tapirus_bairdii", 
"Tapirus_bairdii", "Tapirus_bairdii", "Tapirus_bairdii", "Tapirus_bairdii", 
"Tapirus_bairdii", "Tapirus_bairdii", "Tapirus_bairdii", "Tapirus_bairdii", 
"Tapirus_bairdii", "Tapirus_bairdii", "Tapirus_bairdii", "Tapirus_bairdii", 
"Tapirus_bairdii", "Tapirus_bairdii", "Tapirus_bairdii", "Tapirus_bairdii", 
"Zaglossus_bruijnii", "Zaglossus_bruijnii", "Zaglossus_bruijnii", 
"Zaglossus_bruijnii", "Zaglossus_bruijnii", "Zaglossus_bruijnii", 
"Zaglossus_bruijnii", "Zaglossus_bruijnii", "Zaglossus_bruijnii", 
"Zaglossus_bruijnii", "Zaglossus_bruijnii", "Zaglossus_bruijnii", 
"Zaglossus_bruijnii", "Zaglossus_bruijnii", "Zaglossus_bruijnii", 
"Zaglossus_bruijnii", "Zaglossus_bruijnii", "Zaglossus_bruijnii", 
"Zaglossus_bruijnii", "Zaglossus_bruijnii", "Zaglossus_bruijnii", 
"Zaglossus_bruijnii", "Zaglossus_bruijnii", "Zaglossus_bruijnii", 
"Zaglossus_bruijnii", "Varanus_beng", "Varanus_beng", "Varanus_beng", 
"Varanus_beng", "Varanus_beng", "Varanus_beng", "Varanus_beng", 
"Varanus_beng", "Varanus_beng", "Varanus_beng", "Varanus_beng", 
"Varanus_beng", "Varanus_beng", "Varanus_beng", "Varanus_beng", 
"Varanus_beng", "Varanus_beng", "Varanus_beng", "Varanus_beng", 
"Varanus_beng", "Varanus_beng", "Varanus_beng", "Varanus_beng", 
"Varanus_beng", "Varanus_beng", "Varanus_beng", "Varanus_beng"
), vertebrae_number = c(3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 
12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 
1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 
15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 1L, 2L, 
3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 
17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 1L, 2L, 3L, 4L, 5L, 6L, 
7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 
20L, 21L, 22L, 23L, 24L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 
10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 
23L, 24L, 25L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 
12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 
25L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 
14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L, 
27L, 28L, 29L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 
12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 
25L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 
14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 1L, 2L, 3L, 
4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 
18L, 19L, 20L, 21L, 22L, 23L, 24L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 
8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 
21L, 22L, 23L, 24L, 25L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 
10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 
23L, 24L, 25L, 26L, 27L, 28L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 
9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 
22L, 23L, 24L, 25L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 
11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 
24L, 25L, 26L, 27L), centrum_length = c(22.38, 22.1, 22.29, 21.235, 
21.13, 20.57, 21.255, 22.42, 24.19, 27.54, 27.95, 27.45, 26.855, 
27.475, 28.545, 28.97, 30.255, 28.895, 29.14, 28.02, 26.06, 24.565, 
9.82, 10.515, 9.935, 10.04, 9.97, 10.33, 10.5, 10.735, 11.335, 
11.495, 11.285, 12, 11.165, 12.96, 12.035, 14.14, 13.16, 14.885, 
15.585, 17.41, 20.06, 20.735, 21.185, 21.78, 20.235, 56.015, 
53.505, 44.355, 38.3, 29.6, 25.795, 25.32, 26.44, 26.525, 25.78, 
25.415, 25.24, 24.62, 25.25, 26.865, 27.815, 30.495, 32.465, 
33.13, 33.36, 33.76, 33.425, 34.55, 30.55, 7.8235, 8.228, 7.5045, 
6.9675, 8.039, 9.4845, 10.374, 10.964, 11.829, 11.4645, 11.915, 
12.6985, 13.0175, 14.1775, 14.9935, 15.0685, 15.6245, 16.853, 
17.0555, 18.2435, 19.9365, 21.3335, 20.754, 21.5395, 3.3927, 
3.6469, 3.5384, 4.1881, 4.2201, 5.1543, 4.914, 6.2748, 6.2357, 
6.6088, 6.5692, 7.2566, 7.3505, 7.7192, 7.3962, 8.19, 7.634, 
7.7893, 7.6848, 8.0341, 7.7616, 8.015, 7.535, 7.0289, 6.3422, 
8.25, 7.245, 7.215, 7, 7.01, 7.335, 7.665, 8.035, 8.66, 8.305, 
8.37, 8.535, 8.94, 9.32, 9.63, 10.17, 9.88, 9.96, 10.185, 12.24, 
14.05, 14.98, 14.36, 14.89, 13.455, 96.66, 93.98, 93.125, 85.975, 
57.11, 43.39, 41.205, 41.56, 43.015, 43.535, 38.815, 38.625, 
40.155, 39.015, 39.265, 38.91, 41.08, 39.76, 39.35, 40.28, 40.84, 
42.305, 44.44, 45.965, 47.495, 46.22, 49.325, 49.245, 50.805, 
11.68, 11.2, 10.3, 10.41, 9.56, 8.93, 7.83, 8.44, 8.72, 8.67, 
9.31, 9.53, 9.96, 10.25, 10.7, 11.23, 10.76, 12.05, 13.29, 15.36, 
16.8, 18.91, 19.64, 19.84, 14.94, 9.897, 9.6255, 8.0945, 7.2585, 
6.2305, 5.9695, 6.727, 7.3455, 8.251, 8.048, 8.8605, 9.266, 10.682, 
11.473, 12.5665, 14.5595, 16.265, 17.0525, 18.054, 18.9225, 18.3175, 
18.418, 14.614, 31.47, 28.57, 29.08, 27.96, 28.84, 33.295, 32.005, 
31.005, 30.595, 29.69, 29.805, 30.335, 31.265, 31.88, 32.955, 
32.855, 34.825, 35.975, 39.405, 41.455, 41.685, 42.125, 45.22, 
41.79, 10.877, 10.8915, 11.168, 11.925, 10.9205, 12.3015, 12.13, 
11.885, 11.4285, 11.5525, 11.469, 11.2115, 11.751, 11.729, 12.2935, 
11.893, 11.767, 12.4635, 13.3895, 12.812, 13.51, 13.5515, 13.094, 
14.0795, 14.1375, 37.925, 36.37, 33.14, 30.535, 30.62, 33.005, 
31.045, 31.595, 28.925, 29.29, 30.75, 31.655, 32.305, 31.97, 
31.885, 32.275, 32.76, 32.315, 32.385, 31.9, 35.505, 33.485, 
34.94, 35.925, 35.63, 35.895, 35.735, 37.47, 12.825, 12.73, 13.465, 
11.47, 11.825, 10.36, 11.46, 11.195, 10.83, 8.995, 10.05, 9.83, 
10.87, 10.5, 9.845, 9.725, 11.035, 11.095, 10.76, 10.935, 11.385, 
11.675, 12.485, 12.25, 11.67, 10.31, 11.025, 11.24, 11.405, 11.015, 
10.565, 9.965, 9.81, 9.225, 9.365, 9.14, 9.61, 8.87, 9.3, 9.21, 
9.51, 9.62, 9.315, 9.84, 9.19, 10.12, 9.2, 9.695, 9.33, 9.22, 
9.315, 9.105)), class = "data.frame", row.names = c(NA, -351L
))
Rui Barradas
  • 70,273
  • 8
  • 34
  • 66
  • 2
    R has functions to calculate the `mean`, `sd` or `var`iance of a vector of numbers. The online help should give you all the information you need. Thank you for acknowledging this is a homework question and for attempting to do something at least vaguely related to your question. – Limey Sep 22 '22 at 17:28
  • You need to compute the coefficient of variation of the `centrum_length`, not of the species, right? Can you post sample data in `dput` format? Please edit the question with the output of `dput(comp.lc)`. Or, if it is too big with the output of `dput(head(comp.lc, 20))`. – Rui Barradas Sep 22 '22 at 17:42
  • @RuiBarradas now at the end of the post you can find the data frame, and yes I need the cv of the centrum length but by species. Thx for wanting to help! – Esteban Garcíal Sep 22 '22 at 18:46

1 Answers1

1

There already are question on how to compute summary statistics by group in R, see here, . In this case define a function cv and call it in any of the following ways.

Base R

The difference between the solutions below is the output format.

cv <- function(x, na.rm = FALSE)  sd(x, na.rm = na.rm)/mean(x, na.rm = na.rm)

aggregate(centrum_length ~ species, comp.lc, cv)
#>                    species centrum_length
#> 1  Alligator_missippiensis     0.12680122
#> 2        Alouatta_palliata     0.29697942
#> 3    Antilocapra_americana     0.26626589
#> 4        Castor_canadensis     0.33889613
#> 5          Corucia_zebrata     0.24594249
#> 6     Didelphis_virginiana     0.26629969
#> 7           Equus_caballus     0.35649279
#> 8              Felis_catus     0.30116526
#> 9         Lepus_americanus     0.38381457
#> 10              Sus scrofa     0.15220894
#> 11   Tamandua_tetradactyla     0.08054581
#> 12         Tapirus_bairdii     0.07282978
#> 13            Varanus_beng     0.07351440
#> 14      Zaglossus_bruijnii     0.09612595

by(comp.lc$centrum_length, comp.lc$species, cv)
#> comp.lc$species: Alligator_missippiensis
#> [1] 0.1268012
#> ------------------------------------------------------------ 
#> comp.lc$species: Alouatta_palliata
#> [1] 0.2969794
#> ------------------------------------------------------------ 
#> comp.lc$species: Antilocapra_americana
#> [1] 0.2662659
#> ------------------------------------------------------------ 
#> comp.lc$species: Castor_canadensis
#> [1] 0.3388961
#> ------------------------------------------------------------ 
#> comp.lc$species: Corucia_zebrata
#> [1] 0.2459425
#> ------------------------------------------------------------ 
#> comp.lc$species: Didelphis_virginiana
#> [1] 0.2662997
#> ------------------------------------------------------------ 
#> comp.lc$species: Equus_caballus
#> [1] 0.3564928
#> ------------------------------------------------------------ 
#> comp.lc$species: Felis_catus
#> [1] 0.3011653
#> ------------------------------------------------------------ 
#> comp.lc$species: Lepus_americanus
#> [1] 0.3838146
#> ------------------------------------------------------------ 
#> comp.lc$species: Sus scrofa
#> [1] 0.1522089
#> ------------------------------------------------------------ 
#> comp.lc$species: Tamandua_tetradactyla
#> [1] 0.08054581
#> ------------------------------------------------------------ 
#> comp.lc$species: Tapirus_bairdii
#> [1] 0.07282978
#> ------------------------------------------------------------ 
#> comp.lc$species: Varanus_beng
#> [1] 0.0735144
#> ------------------------------------------------------------ 
#> comp.lc$species: Zaglossus_bruijnii
#> [1] 0.09612595

with(comp.lc, tapply(centrum_length, species, cv))
#> Alligator_missippiensis       Alouatta_palliata   Antilocapra_americana 
#>              0.12680122              0.29697942              0.26626589 
#>       Castor_canadensis         Corucia_zebrata    Didelphis_virginiana 
#>              0.33889613              0.24594249              0.26629969 
#>          Equus_caballus             Felis_catus        Lepus_americanus 
#>              0.35649279              0.30116526              0.38381457 
#>              Sus scrofa   Tamandua_tetradactyla         Tapirus_bairdii 
#>              0.15220894              0.08054581              0.07282978 
#>            Varanus_beng      Zaglossus_bruijnii 
#>              0.07351440              0.09612595

Created on 2022-09-22 with reprex v2.0.2


dplyr solution.

suppressPackageStartupMessages(
  library(dplyr)
)

cv <- function(x, na.rm = FALSE)  sd(x, na.rm = na.rm)/mean(x, na.rm = na.rm)

comp.lc %>%
  group_by(species) %>%
  summarise(cv = cv(centrum_length))
#> # A tibble: 14 × 2
#>    species                     cv
#>    <chr>                    <dbl>
#>  1 Alligator_missippiensis 0.127 
#>  2 Alouatta_palliata       0.297 
#>  3 Antilocapra_americana   0.266 
#>  4 Castor_canadensis       0.339 
#>  5 Corucia_zebrata         0.246 
#>  6 Didelphis_virginiana    0.266 
#>  7 Equus_caballus          0.356 
#>  8 Felis_catus             0.301 
#>  9 Lepus_americanus        0.384 
#> 10 Sus scrofa              0.152 
#> 11 Tamandua_tetradactyla   0.0805
#> 12 Tapirus_bairdii         0.0728
#> 13 Varanus_beng            0.0735
#> 14 Zaglossus_bruijnii      0.0961

Created on 2022-09-22 with reprex v2.0.2

Rui Barradas
  • 70,273
  • 8
  • 34
  • 66