#install.packages("dplyr")
library(dplyr)
## Warning: package 'dplyr' was built under R version 3.5.3
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
edidiv <- read.csv("C:/Users/USUARIO/Documents/Geomatica/intro_to_R/CC-RBasics-master/edidiv.csv")
head(edidiv)
## organisationName gridReference year taxonName
## 1 Joint Nature Conservation Committee NT265775 2000 Sterna hirundo
## 2 Joint Nature Conservation Committee NT235775 2000 Sterna hirundo
## 3 Joint Nature Conservation Committee NT235775 2000 Sterna paradisaea
## 4 British Trust for Ornithology NT27 2000 Branta canadensis
## 5 British Trust for Ornithology NT27 2000 Branta leucopsis
## 6 The Wildlife Information Centre NT27S 2001 Turdus merula
## taxonGroup
## 1 Bird
## 2 Bird
## 3 Bird
## 4 Bird
## 5 Bird
## 6 Bird
tail(edidiv)
## organisationName gridReference year
## 25679 The Mammal Society NT278745 2016
## 25680 The Mammal Society NT277724 2016
## 25681 The Mammal Society NT266728 2016
## 25682 The Mammal Society NT270728 2016
## 25683 The Mammal Society NT257762 2016
## 25684 People's Trust for Endangered Species NT2372 2016
## taxonName taxonGroup
## 25679 Sciurus carolinensis Mammal
## 25680 Capreolus capreolus Mammal
## 25681 Sciurus carolinensis Mammal
## 25682 Oryctolagus cuniculus Mammal
## 25683 Vulpes vulpes Mammal
## 25684 Erinaceus europaeus Mammal
str(edidiv)
## '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 ...
El comando wtr(object.name)es un comando que muestra la estructura de los datos
el siguiente cimando muestra solos las primeras filas de esta columna
head(edidiv$taxonGroup)
## [1] Bird Bird Bird Bird Bird Bird
## 11 Levels: Beetle Bird Butterfly Dragonfly Flowering.Plants ... Mollusc
Este comando indica con qué tipo de variable se está trabajando: es carácter pero se desea que sea un factor
class(edidiv$taxonGroup)
## [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.
El siguiente comando muestra el número de filas y columnas que posee nuestra base de datos:
dim(edidiv)
## [1] 25684 5
Da un resumen de datos
summary(edidiv)
## organisationName gridReference
## Biological Records Centre :6744 NT2673 : 2741
## RSPB :5809 NT2773 : 2031
## Butterfly Conservation :3000 NT2873 : 1247
## Scottish Wildlife Trust :2070 NT2570 : 1001
## Conchological Society of Great Britain & Ireland:1998 NT27 : 888
## The Wildlife Information Centre :1860 NT2871 : 767
## (Other) :4203 (Other):17009
## year taxonName taxonGroup
## Min. :2000 Maniola jurtina : 1710 Butterfly :9670
## 1st Qu.:2006 Aphantopus hyperantus: 1468 Bird :7366
## Median :2009 Turdus merula : 1112 Flowering.Plants:2625
## Mean :2009 Lycaena phlaeas : 972 Mollusc :2226
## 3rd Qu.:2011 Aglais urticae : 959 Hymenopteran :1391
## Max. :2016 Aglais io : 720 Mammal : 960
## (Other) :18743 (Other) :1446
El siguiente codigo da un resumen de esa variable en particular en su conjunto de datos
summary(edidiv$taxonGroup)
## Beetle Bird Butterfly Dragonfly
## 426 7366 9670 421
## Flowering.Plants Fungus Hymenopteran Lichen
## 2625 334 1391 140
## Liverwort Mammal Mollusc
## 125 960 2226
Hay que tener encuenta que 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
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" "Dragonfly"
## [5] "Flowering.Plants" "Fungus" "Hymenopteran" "Lichen"
## [9] "Liverwort" "Mammal" "Mollusc"
Para visualizar la riqueza se utiliza la siguiente función:
library(dplyr)
barplot(biodiv)
barplot
## function (height, ...)
## UseMethod("barplot")
## <bytecode: 0x0000000013bd2cc0>
## <environment: namespace:graphics>
help(barplot)
## starting httpd help server ... done
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)
Se utiliza un dataframe cuando se tiene más de una variable y múltiples tipos de datos.Dataframe won 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
## taxa_f richness
## 1 Beetle 37
## 2 Bird 86
## 3 Butterfly 25
## 4 Dragonfly 11
## 5 Flowering.Plants 521
## 6 Fungus 219
## 7 Hymenopteran 112
## 8 Lichen 94
## 9 Liverwort 40
## 10 Mammal 33
## 11 Mollusc 97
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()
## png
## 2
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()
## png
## 2
Aves
## Especiesaves Envergadura
## 1 gorrion 22
## 2 martinpescador 26
## 3 aguila 195
## 4 colibri 8