1.

Coding Club Workshop 1 - R Basics

Learning how to import and explore data, and make graphs about Edinburgh’s biodiversity

Written by Paula Juliana Virguez Gomez 12/03/2020 Universidad Nacional de Colombia

2. Importar y verificar datos

edidiv.csv <-read.csv("/cloud/project/edidiv.csv")

Verificacion de que los datos se importaron sin errores Hacer click en el panel superior derecho para verificar las primeras lineas

head(edidiv.csv)
tail(edidiv.csv)

str() es un comando que muestra la estructura de sus datos.

str(edidiv.csv)
'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 ...

Cuando se desee acceder solo a una columna de un marco de datos, agregue el nombre de la variable al nombre del objeto con un signo de dólar $. Esta sintaxis permite ver, modificar y / o reasignar esta variable.

Muestra solo las primeras filas de esta columna

head(edidiv.csv$taxonGroup)
[1] Bird Bird Bird Bird Bird Bird
11 Levels: Beetle Bird Butterfly Dragonfly ... Mollusc

Dice que tipo de variable se esta lidiando: es el personaje pero ahora se quiere que sea un factor

class(edidiv.csv$taxonGroup)
[1] "factor"
edidiv.csv$taxonGroup <- as.factor(edidiv.csv$taxonGroup)

as.factor() convierte cualquier valor que se coloque dentro en un factor

class(edidiv.csv$taxonGroup)
[1] "factor"
dim(edidiv.csv)
[1] 25684     5
summary(edidiv.csv)
                                             organisationName
 Biological Records Centre                           :6744   
 RSPB                                                :5809   
 Butterfly Conservation                              :3000   
 Scottish Wildlife Trust                             :2070   
 Conchological Society of Great Britain &amp; 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  

Da un resumen de esa variable particular en su conjunto de datos

summary(edidiv.csv$taxonGroup)
          Beetle             Bird        Butterfly 
             426             7366             9670 
       Dragonfly Flowering.Plants           Fungus 
             421             2625              334 
    Hymenopteran           Lichen        Liverwort 
            1391              140              125 
          Mammal          Mollusc 
             960             2226 

3. Calcular la riqueza de especies

Dividir edidiv en varios objetos, cada uno con filas de un solo grupo taxonomico

Beetle <- filter(edidiv.csv, taxonGroup == "Beetle")
Bird <- filter(edidiv.csv, taxonGroup == "Bird")
Flowering.Plants <- filter(edidiv.csv, taxonGroup == "Flowering.Plants")
Butterfly <- filter(edidiv.csv, taxonGroup == "Butterfly")
Dragonfly <- filter(edidiv.csv, taxonGroup == "Dragonfly")
Fungus <- filter(edidiv.csv, taxonGroup == "Fungus")
Hymenopteran <- filter(edidiv.csv, taxonGroup == "Hymenopteran")
Lichen <- filter(edidiv.csv, taxonGroup == "Lichen")
Liverwort <- filter(edidiv.csv, taxonGroup == "Liverwort")
Mammal <- filter(edidiv.csv, taxonGroup == "Mammal")
Mollusc <- filter(edidiv.csv, taxonGroup == "Mollusc")

Para calcular el numero de especies diferentes en cada grupo se tienen 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))

Combinar los valores de un vector c()

biovid <- c(a,b,c,d,e,f,g,h,i,j,k)
names(biovid) <- c("Beetle",
                   "Bird",
                   "Butterfly",
                   "Dragonfly",
                   "Flowering.Plants",
                   "Fungus",
                   "Hymenopteran",
                   "Lichen",
                   "Liverwort",
                   "Mammal",
                   "Mollusc")
barplot(biovid)

Funcion help() sirve para ver que argumentos se necesitan agregar

help("barplot")
help("par")
barplot(biovid, col = heat.colors(12), log = "y")

barplot(biovid, col = gray.colors(20), log = "xy")

Pruebas

barplot(biovid, border = "red")

Abrir png () y cerrar dev.off() el dispositivo de trazado

barplot(biovid, xlab = "Taxa", ylab = "Number of species", ylim = c(0,600), cex.names = 1, cex.axis = 1, cex.lab=1.5)

5. Crear un marco de datos y trazarlo

Crear un objeto llamado “taxa” que contiene todos los nombres de taxa

taxa <- c("Beetle",
          "Bird",
          "Butterfly",
          "Dragonfly",
          "Flowering.Plants",
          "Fungus",
          "Hymenopteran",
          "Lichen",
          "Liverwort",
          "Mammal",
          "Mollusc")

Convertir este objeto en un factor, es decir, una variable categórica

taxa_f <-factor(taxa)

Combinar todos los valores para el número de especies en un objeto llamado riqueza

richness <-c(a,b,c,d,e,f,g,h,i,j,k)

Crear el marco de datos a partir de los dos vectores

biodata<-data.frame(taxa_f,richness)

Guardar archivo

write.csv(biodata,file = "biodata.csv")

Guardar un diagrama de barras usando el marco de datos

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 = "Taxa", ylab = "Number of species",ylim = c(0,600))
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayB0dXRvcmlhbCIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKIyMjIDEuIAoKQ29kaW5nIENsdWIgV29ya3Nob3AgMSAtIFIgQmFzaWNzCgpMZWFybmluZyBob3cgdG8gaW1wb3J0IGFuZCBleHBsb3JlIGRhdGEsIGFuZCBtYWtlIGdyYXBocyBhYm91dCBFZGluYnVyZ2gncyBiaW9kaXZlcnNpdHkKCldyaXR0ZW4gYnkgUGF1bGEgSnVsaWFuYSBWaXJndWV6IEdvbWV6IDEyLzAzLzIwMjAgVW5pdmVyc2lkYWQgTmFjaW9uYWwgZGUgQ29sb21iaWEKIAojIyMgMi4gSW1wb3J0YXIgeSB2ZXJpZmljYXIgZGF0b3MKYGBge3J9CmVkaWRpdi5jc3YgPC1yZWFkLmNzdigiL2Nsb3VkL3Byb2plY3QvZWRpZGl2LmNzdiIpCmBgYAoKVmVyaWZpY2FjaW9uIGRlIHF1ZSBsb3MgZGF0b3Mgc2UgaW1wb3J0YXJvbiBzaW4gZXJyb3JlcwpIYWNlciBjbGljayBlbiBlbCBwYW5lbCBzdXBlcmlvciBkZXJlY2hvIHBhcmEgdmVyaWZpY2FyIGxhcyBwcmltZXJhcyBsaW5lYXMKCmBgYHtyfQpoZWFkKGVkaWRpdi5jc3YpCmBgYAoKYGBge3J9CnRhaWwoZWRpZGl2LmNzdikKYGBgCnN0cigpIGVzIHVuIGNvbWFuZG8gcXVlIG11ZXN0cmEgbGEgZXN0cnVjdHVyYSBkZSBzdXMgZGF0b3MuCmBgYHtyfQpzdHIoZWRpZGl2LmNzdikKYGBgCkN1YW5kbyBzZSBkZXNlZSBhY2NlZGVyIHNvbG8gYSB1bmEgY29sdW1uYSBkZSB1biBtYXJjbyBkZSBkYXRvcywgYWdyZWd1ZSBlbCBub21icmUgZGUgbGEgdmFyaWFibGUgYWwgbm9tYnJlIGRlbCBvYmpldG8gY29uIHVuIHNpZ25vIGRlIGTDs2xhciAkLiBFc3RhIHNpbnRheGlzIHBlcm1pdGUgdmVyLCBtb2RpZmljYXIgeSAvIG8gcmVhc2lnbmFyIGVzdGEgdmFyaWFibGUuCgpNdWVzdHJhIHNvbG8gbGFzIHByaW1lcmFzIGZpbGFzIGRlIGVzdGEgY29sdW1uYQpgYGB7cn0KaGVhZChlZGlkaXYuY3N2JHRheG9uR3JvdXApCmBgYApEaWNlIHF1ZSB0aXBvIGRlIHZhcmlhYmxlIHNlIGVzdGEgbGlkaWFuZG86IGVzIGVsIHBlcnNvbmFqZSBwZXJvIGFob3JhIHNlIHF1aWVyZSBxdWUgc2VhIHVuIGZhY3RvcgpgYGB7cn0KY2xhc3MoZWRpZGl2LmNzdiR0YXhvbkdyb3VwKQpgYGAKCmBgYHtyfQplZGlkaXYuY3N2JHRheG9uR3JvdXAgPC0gYXMuZmFjdG9yKGVkaWRpdi5jc3YkdGF4b25Hcm91cCkKYGBgCmFzLmZhY3RvcigpIGNvbnZpZXJ0ZSBjdWFscXVpZXIgdmFsb3IgcXVlIHNlIGNvbG9xdWUgZGVudHJvIGVuIHVuIGZhY3RvcgoKYGBge3J9CmNsYXNzKGVkaWRpdi5jc3YkdGF4b25Hcm91cCkKYGBgCgoKYGBge3J9CmRpbShlZGlkaXYuY3N2KQpgYGAKCmBgYHtyfQpzdW1tYXJ5KGVkaWRpdi5jc3YpCmBgYApEYSB1biByZXN1bWVuIGRlIGVzYSB2YXJpYWJsZSBwYXJ0aWN1bGFyIGVuIHN1IGNvbmp1bnRvIGRlIGRhdG9zCmBgYHtyfQpzdW1tYXJ5KGVkaWRpdi5jc3YkdGF4b25Hcm91cCkKYGBgCgojIyMgMy4gQ2FsY3VsYXIgbGEgcmlxdWV6YSBkZSBlc3BlY2llcwoKRGl2aWRpciBlZGlkaXYgZW4gdmFyaW9zIG9iamV0b3MsIGNhZGEgdW5vIGNvbiBmaWxhcyBkZSB1biBzb2xvIGdydXBvIHRheG9ub21pY28KYGBge3J9CkJlZXRsZSA8LSBmaWx0ZXIoZWRpZGl2LmNzdiwgdGF4b25Hcm91cCA9PSAiQmVldGxlIikKYGBgCgpgYGB7cn0KQmlyZCA8LSBmaWx0ZXIoZWRpZGl2LmNzdiwgdGF4b25Hcm91cCA9PSAiQmlyZCIpCmBgYAoKYGBge3J9CkZsb3dlcmluZy5QbGFudHMgPC0gZmlsdGVyKGVkaWRpdi5jc3YsIHRheG9uR3JvdXAgPT0gIkZsb3dlcmluZy5QbGFudHMiKQpgYGAKCmBgYHtyfQpCdXR0ZXJmbHkgPC0gZmlsdGVyKGVkaWRpdi5jc3YsIHRheG9uR3JvdXAgPT0gIkJ1dHRlcmZseSIpCmBgYAoKYGBge3J9CkRyYWdvbmZseSA8LSBmaWx0ZXIoZWRpZGl2LmNzdiwgdGF4b25Hcm91cCA9PSAiRHJhZ29uZmx5IikKYGBgCgpgYGB7cn0KRnVuZ3VzIDwtIGZpbHRlcihlZGlkaXYuY3N2LCB0YXhvbkdyb3VwID09ICJGdW5ndXMiKQpgYGAKCmBgYHtyfQpIeW1lbm9wdGVyYW4gPC0gZmlsdGVyKGVkaWRpdi5jc3YsIHRheG9uR3JvdXAgPT0gIkh5bWVub3B0ZXJhbiIpCmBgYAoKYGBge3J9CkxpY2hlbiA8LSBmaWx0ZXIoZWRpZGl2LmNzdiwgdGF4b25Hcm91cCA9PSAiTGljaGVuIikKYGBgCgpgYGB7cn0KTGl2ZXJ3b3J0IDwtIGZpbHRlcihlZGlkaXYuY3N2LCB0YXhvbkdyb3VwID09ICJMaXZlcndvcnQiKQpgYGAKCmBgYHtyfQpNYW1tYWwgPC0gZmlsdGVyKGVkaWRpdi5jc3YsIHRheG9uR3JvdXAgPT0gIk1hbW1hbCIpCmBgYAoKYGBge3J9Ck1vbGx1c2MgPC0gZmlsdGVyKGVkaWRpdi5jc3YsIHRheG9uR3JvdXAgPT0gIk1vbGx1c2MiKQpgYGAKClBhcmEgY2FsY3VsYXIgZWwgbnVtZXJvIGRlIGVzcGVjaWVzIGRpZmVyZW50ZXMgZW4gY2FkYSBncnVwbyBzZSB0aWVuZW4gbGFzIGZ1bmNpb25lcyB1bmlxdWUoKSBxdWUgaWRlbnRpZmljYSBkaWZlcmVudGVzIGVzcGVjaWVzIHkgbGVuZ3RoKCkgcXVlIGxhcyBjdWVudGEKCmBgYHtyfQphIDwtIGxlbmd0aCh1bmlxdWUoQmVldGxlJHRheG9uTmFtZSkpCmIgPC0gbGVuZ3RoKHVuaXF1ZShCaXJkJHRheG9uTmFtZSkpCmMgPC0gbGVuZ3RoKHVuaXF1ZShCdXR0ZXJmbHkkdGF4b25OYW1lKSkKZCA8LSBsZW5ndGgodW5pcXVlKERyYWdvbmZseSR0YXhvbk5hbWUpKQplIDwtIGxlbmd0aCh1bmlxdWUoRmxvd2VyaW5nLlBsYW50cyR0YXhvbk5hbWUpKQpmIDwtIGxlbmd0aCh1bmlxdWUoRnVuZ3VzJHRheG9uTmFtZSkpCmcgPC0gbGVuZ3RoKHVuaXF1ZShIeW1lbm9wdGVyYW4kdGF4b25OYW1lKSkKaCA8LSBsZW5ndGgodW5pcXVlKExpY2hlbiR0YXhvbk5hbWUpKQppIDwtIGxlbmd0aCh1bmlxdWUoTGl2ZXJ3b3J0JHRheG9uTmFtZSkpCmogPC0gbGVuZ3RoKHVuaXF1ZShNYW1tYWwkdGF4b25OYW1lKSkKayA8LSBsZW5ndGgodW5pcXVlKE1vbGx1c2MkdGF4b25OYW1lKSkKYGBgCgpDb21iaW5hciBsb3MgdmFsb3JlcyBkZSB1biB2ZWN0b3IgYygpCgpgYGB7cn0KYmlvdmlkIDwtIGMoYSxiLGMsZCxlLGYsZyxoLGksaixrKQpuYW1lcyhiaW92aWQpIDwtIGMoIkJlZXRsZSIsCiAgICAgICAgICAgICAgICAgICAiQmlyZCIsCiAgICAgICAgICAgICAgICAgICAiQnV0dGVyZmx5IiwKICAgICAgICAgICAgICAgICAgICJEcmFnb25mbHkiLAogICAgICAgICAgICAgICAgICAgIkZsb3dlcmluZy5QbGFudHMiLAogICAgICAgICAgICAgICAgICAgIkZ1bmd1cyIsCiAgICAgICAgICAgICAgICAgICAiSHltZW5vcHRlcmFuIiwKICAgICAgICAgICAgICAgICAgICJMaWNoZW4iLAogICAgICAgICAgICAgICAgICAgIkxpdmVyd29ydCIsCiAgICAgICAgICAgICAgICAgICAiTWFtbWFsIiwKICAgICAgICAgICAgICAgICAgICJNb2xsdXNjIikKYGBgCgpgYGB7cn0KYmFycGxvdChiaW92aWQpCmBgYAoKCkZ1bmNpb24gaGVscCgpIHNpcnZlIHBhcmEgdmVyIHF1ZSBhcmd1bWVudG9zIHNlIG5lY2VzaXRhbiBhZ3JlZ2FyCgpgYGB7cn0KaGVscCgiYmFycGxvdCIpCmBgYAoKYGBge3J9CmhlbHAoInBhciIpCmBgYAoKYGBge3J9CmJhcnBsb3QoYmlvdmlkLCBjb2wgPSBoZWF0LmNvbG9ycygxMiksIGxvZyA9ICJ5IikKYmFycGxvdChiaW92aWQsIGNvbCA9IGdyYXkuY29sb3JzKDIwKSwgbG9nID0gInh5IikKYGBgCgoKUHJ1ZWJhcwoKYGBge3J9CmJhcnBsb3QoYmlvdmlkLCBib3JkZXIgPSAicmVkIikKYGBgCgpBYnJpciBwbmcgKCkgeSBjZXJyYXIgZGV2Lm9mZigpIGVsIGRpc3Bvc2l0aXZvIGRlIHRyYXphZG8KYGBge3J9CmJhcnBsb3QoYmlvdmlkLCB4bGFiID0gIlRheGEiLCB5bGFiID0gIk51bWJlciBvZiBzcGVjaWVzIiwgeWxpbSA9IGMoMCw2MDApLCBjZXgubmFtZXMgPSAxLCBjZXguYXhpcyA9IDEsIGNleC5sYWI9MS41KQpgYGAKCgojIyMgNS4gQ3JlYXIgdW4gbWFyY28gZGUgZGF0b3MgeSB0cmF6YXJsbwpDcmVhciB1biBvYmpldG8gbGxhbWFkbyAidGF4YSIgcXVlIGNvbnRpZW5lIHRvZG9zIGxvcyBub21icmVzIGRlIHRheGEKYGBge3J9CnRheGEgPC0gYygiQmVldGxlIiwKICAgICAgICAgICJCaXJkIiwKICAgICAgICAgICJCdXR0ZXJmbHkiLAogICAgICAgICAgIkRyYWdvbmZseSIsCiAgICAgICAgICAiRmxvd2VyaW5nLlBsYW50cyIsCiAgICAgICAgICAiRnVuZ3VzIiwKICAgICAgICAgICJIeW1lbm9wdGVyYW4iLAogICAgICAgICAgIkxpY2hlbiIsCiAgICAgICAgICAiTGl2ZXJ3b3J0IiwKICAgICAgICAgICJNYW1tYWwiLAogICAgICAgICAgIk1vbGx1c2MiKQpgYGAKCkNvbnZlcnRpciBlc3RlIG9iamV0byBlbiB1biBmYWN0b3IsIGVzIGRlY2lyLCB1bmEgdmFyaWFibGUgY2F0ZWfDs3JpY2EKYGBge3J9CnRheGFfZiA8LWZhY3Rvcih0YXhhKQpgYGAKCkNvbWJpbmFyIHRvZG9zIGxvcyB2YWxvcmVzIHBhcmEgZWwgbsO6bWVybyBkZSBlc3BlY2llcyBlbiB1biBvYmpldG8gbGxhbWFkbyByaXF1ZXphCmBgYHtyfQpyaWNobmVzcyA8LWMoYSxiLGMsZCxlLGYsZyxoLGksaixrKQpgYGAKCkNyZWFyIGVsIG1hcmNvIGRlIGRhdG9zIGEgcGFydGlyIGRlIGxvcyBkb3MgdmVjdG9yZXMKYGBge3J9CmJpb2RhdGE8LWRhdGEuZnJhbWUodGF4YV9mLHJpY2huZXNzKQpgYGAKCkd1YXJkYXIgYXJjaGl2bwpgYGB7cn0Kd3JpdGUuY3N2KGJpb2RhdGEsZmlsZSA9ICJiaW9kYXRhLmNzdiIpCmBgYAoKR3VhcmRhciB1biBkaWFncmFtYSBkZSBiYXJyYXMgdXNhbmRvIGVsIG1hcmNvIGRlIGRhdG9zCmBgYHtyfQpwbmcoImJhcnBsb3QyLnBuZyIsIHdpZHRoID0gMTYwMCwgaGVpZ2h0ID0gNjAwKQpiYXJwbG90KGJpb2RhdGEkcmljaG5lc3MsbmFtZXMuYXJnID0gYygiQmVldGxlIiwiQmlyZCIsIkJ1dHRlcmZseSIsIkRyYWdvbmZseSIsIkZsb3dlcmluZy5QbGFudHMiLCJGdW5ndXMiLCJIeW1lbm9wdGVyYW4iLCJMaWNoZW4iLCJMaXZlcndvcnQiLCJNYW1tYWwiLCJNb2xsdXNjIiksCiAgICAgICAgeGxhYiA9ICJUYXhhIiwgeWxhYiA9ICJOdW1iZXIgb2Ygc3BlY2llcyIseWxpbSA9IGMoMCw2MDApKQoKYGBg