install.package(“dplyr”) library(dplyr) # Note that there are quotation marks when installing a package, but not when loading it # and remember that hashtags let you add useful notes to your code!
setwd(“C:/Users/user/Documents/Intro_to_R”) getwd()
#2. Importar y verificar datos
#Se importaron los datos de biodiversidad de Edimburgo, y el directorio de trabajo donde se guardaron los datos es el siguiente:
edidiv <- read.csv("~/Intro_to_R/edidiv.csv")
#Ahora es importante verificar que los datos fueron importados sin errores. #Es una buena práctica ejecutar estos códigos que muestran los registros del primero y último dato, así como un resumen de los datos.
head(edidiv) #Muestra las primeras filas, los primeros datos
tail(edidiv) #Muestra los últimos datos, las últimas filas
str(edidiv) #Indica si las variables son continuas, enteras, categóricas o caracteres
'data.frame': 25684 obs. of 5 variables:
$ organisationName: Factor w/ 28 levels "BATS & The Millennium Link",..: 14 14 14 8 8 28 28 28 28 28 ...
$ gridReference : Factor w/ 1938 levels "NT200701","NT200712",..: 1314 569 569 1412 1412 1671 1671 1671 1671 1671 ...
$ year : int 2000 2000 2000 2000 2000 2001 2001 2001 2001 2001 ...
$ taxonName : Factor w/ 1275 levels "Acarospora fuscata",..: 1126 1126 1127 192 193 1202 365 977 472 947 ...
$ taxonGroup : Factor w/ 11 levels "Beetle","Bird",..: 2 2 2 2 2 2 2 2 2 2 ...
#str(object.name)es un comando que muestra la estructura de los datos
###La variable taxonGroup se muestra como una variable de carácter, y se va a pasar a variable categórica
head(edidiv$taxonGroup) #Muestra solo las primeras filas de esta columna
[1] Bird Bird Bird Bird Bird Bird
11 Levels: Beetle Bird Butterfly Dragonfly Flowering.Plants ... Mollusc
class(edidiv$taxonGroup) #Indica con qué tipo de variable se está trabajando: es carácter pero se desea que sea un factor
[1] "factor"
edidiv$taxonGroup <- as.factor(edidiv$taxonGroup)
#La función as.factor() va a convertir cualquier valor que se inserte dentro, en un factor.
class(edidiv$taxonGroup)
[1] "factor"
#Información adicional
dim(edidiv) #Muestra el número de filas y columnas
[1] 25684 5
summary(edidiv) #Da un resumen de los datos
organisationName
Biological Records Centre :6744
RSPB :5809
Butterfly Conservation :3000
Scottish Wildlife Trust :2070
Conchological Society of Great Britain & Ireland:1998
The Wildlife Information Centre :1860
(Other) :4203
gridReference year taxonName
NT2673 : 2741 Min. :2000 Maniola jurtina : 1710
NT2773 : 2031 1st Qu.:2006 Aphantopus hyperantus: 1468
NT2873 : 1247 Median :2009 Turdus merula : 1112
NT2570 : 1001 Mean :2009 Lycaena phlaeas : 972
NT27 : 888 3rd Qu.:2011 Aglais urticae : 959
NT2871 : 767 Max. :2016 Aglais io : 720
(Other):17009 (Other) :18743
taxonGroup
Butterfly :9670
Bird :7366
Flowering.Plants:2625
Mollusc :2226
Hymenopteran :1391
Mammal : 960
(Other) :1446
summary(edidiv$taxonGroup) #Da un resumen de esa variable en particular en su conjunto de datos
Beetle Bird Butterfly Dragonfly
426 7366 9670 421
Flowering.Plants Fungus Hymenopteran Lichen
2625 334 1391 140
Liverwort Mammal Mollusc
125 960 2226
#3. Calcular la riqueza de especies
##El objeto edidiv tiene los registros de ocurrencia de varias especies recolectadas en Edimburgo entre los años 2000 y 2016 ##Ahora se creará un gráfico que muestre cuántas especies se registraron en cada grupo taxonómico para explorar más acerca de la biodiversidad en esta ciudad ###La riqueza se puede calcular también en excel, pero presenta desventajas cuando se trabaja con grandes conjuntos de datos
##Riqueza: Número total de especies diferentes en un lugar dado #Para ello se usa la función filter() que dvide evidi en varios objetos, cada uno con filas para un solo grupo taxonómico.
library(dplyr)
Beetle = filter(edidiv, taxonGroup == "Beetle")
Bird = filter(edidiv, taxonGroup == "Bird")
Butterfly = filter(edidiv, taxonGroup == "Butterfly")
Dragonfly = filter(edidiv, taxonGroup == "Dragonfly")
Flowering.Plants = filter(edidiv, taxonGroup == "Flowering.Plants")
Fungus = filter(edidiv, taxonGroup == "Fungus")
Hymenopteran = filter(edidiv, taxonGroup == "Hymenopteran")
Lichen = filter(edidiv, taxonGroup == "Lichen")
Liverwort = filter(edidiv, taxonGroup == "Liverwort")
Mammal = filter(edidiv, taxonGroup == "Mammal")
Mollusc = filter(edidiv, taxonGroup == "Mollusc")
#Para calcular la riqueza se usan las funciones unique() que identifica diferentes especies y length() que las cuenta.
a <- length(unique(Beetle$taxonName))
b <- length(unique(Bird$taxonName))
c <- length(unique(Butterfly$taxonName))
d <- length(unique(Dragonfly$taxonName))
e <- length(unique(Flowering.Plants$taxonName))
f <- length(unique(Fungus$taxonName))
g <- length(unique(Hymenopteran$taxonName))
h <- length(unique(Lichen$taxonName))
i <- length(unique(Liverwort$taxonName))
j <- length(unique(Mammal$taxonName))
k <- length(unique(Mollusc$taxonName))
#Ahora se corre cada letra para calcular la riqueza
a
[1] 37
b
[1] 86
c
[1] 25
d
[1] 11
e
[1] 521
f
[1] 219
g
[1] 112
h
[1] 94
i
[1] 40
j
[1] 33
k
[1] 97
#4. Crear un vector y trazarlo ##Un vector es un objeto de R que almacena valores ##Para crear el vector se usa la función c() y se agregan etiquetas con la función names()
biodiv <- c(a,b,c,d,e,f,g,h,i,j,k)
biodiv
[1] 37 86 25 11 521 219 112 94 40 33 97
names(biodiv) <- c("Beetle",
"Bird",
"Butterfly",
"Dragonfly",
"Flowering.Plants",
"Fungus",
"Hymenopteran",
"Lichen",
"Liverwort",
"Mammal",
"Mollusc")
names(biodiv)
[1] "Beetle" "Bird" "Butterfly"
[4] "Dragonfly" "Flowering.Plants" "Fungus"
[7] "Hymenopteran" "Lichen" "Liverwort"
[10] "Mammal" "Mollusc"
#Se visualiza la riqueza con la siguiente función:
library(dplyr)
barplot(biodiv)
barplot
function (height, ...)
UseMethod("barplot")
<bytecode: 0x000001619a4d8848>
<environment: namespace:graphics>
help(barplot)
help(par)
#Se puede guardar el archivo envolviendo el código en png() y dev.off()
library(dplyr)
png("barplot.png", width = 1600, height = 600)
barplot(biodiv, xlab = "Taxón", ylab = "Número de especies", ylim = c(0,600),cex.names = 1.5, cex.axis = 1.5, cex.lab = 1.5)
barplot(biodiv)
#5. Crear un dataframe y trazarlo ##Se utiliza un dataframe cuando se tiene más de una variable y múltiples tipos de datos #Dataframe: tablas de valores de estructura bidimensional con filas y columnas. #Ahora se creará un dataframe con los datos de riqueza y luego se guardará usando write.csv()
taxa <- c("Beetle",
"Bird",
"Butterfly",
"Dragonfly",
"Flowering.Plants",
"Fungus",
"Hymenopteran",
"Lichen",
"Liverwort",
"Mammal",
"Mollusc")
taxa_f <- factor(taxa)
richness <- c(a,b,c,d,e,f,g,h,i,j,k)
biodata <- data.frame(taxa_f, richness)
biodata
write.csv(biodata, file = "biodata.csv")
#Si se quiere guardar un diagrama de barras usando el dataframe, se necesita cambiar el código, especificando columnas usando $
png("barplot2.png", width = 1600, height = 600)
barplot(biodata$richness, names.arg = c("Beetle",
"Bird",
"Butterfly",
"Dragonfly",
"Flowering.Plants",
"Fungus",
"Hymenopteran",
"Lichen",
"Liverwort",
"Mammal",
"Mollusc"),
xlab = "Taxón", ylab = "Número de especies", ylim = c(0,600))
dev.off()
null device
1
#Ejercicio de aplicación ##Para calcular la media se usa la función mean()
gorrion <- mean(22, 24, 21)
martinpescador <- mean(26, 23, 25)
aguila <- mean(195, 201, 185)
colibri <- mean(8, 9, 9)
Envergadura <- c(gorrion, martinpescador, aguila, colibri)
Especiesaves <- c("gorrion", "martinpescador", "aguila", "colibri")
class(Especiesaves)
[1] "character"
Especiesaves <- as.factor(Especiesaves)
class(Especiesaves)
[1] "factor"
Aves <- data.frame(Especiesaves, Envergadura)
#Si se quiere guardar un diagrama de barras usando el dataframe, se necesita cambiar el código, especificando columnas usando $
png("avesplot3.png", width = 800, height = 600)
barplot(Aves$Envergadura, names.arg = Aves$Especiesaves,
xlab = "Especiesaves", ylab = "Envergadura", ylim = c(0,200),
col = "red")
dev.off()
null device
1
Aves