1. CREANDO NUESTRO DIRECTORIO DE TRABAJO
Todo lo que queremos abrir y guardar de R necesita de una dirección en el computador. Por defecto se redirige para la carpeta “Documentos”, pero podemos revisar donde está localizada con el comando:
getwd()
[1] "C:/Users/USUARIO/Downloads/Minicurso R - Ciencias Sociais"
Una vez revisada esa información podemos escoger donde queremos trabajar. Es importante escoger un carpeta donde se desarrollará el proyecto, ya que la organización de los inputs e outputs dependerá de esta información.
Use el siguiente comando para escoger una dirección en el computador:
setwd("C:/Users/USUARIO/Downloads/Minicurso R - Ciencias Sociais")
En mi caso usaré mi carpeta denominada “Minicurso R”
También podemos revisar todo lo que hay dentro de nuestra carpeta con el siguiente comando:
dir("C:/Users/USUARIO/Downloads/Minicurso R - Ciencias Sociais")
[1] "Aula_1.R"
[2] "Aves_dados.csv"
[3] "Clase_1.html"
[4] "Clase_1.Rmd"
[5] "data_arqui_ollape.xlsx"
[6] "grafico1"
[7] "PLAN ACADÉMICO PRINCIPIOS DE R PARA CIENCIAS SOCIALES.docx"
[8] "PLAN ACADÉMICO PRINCIPIOS DE R PARA CIENCIAS SOCIALES.pdf"
[9] "Range_size_IUCN.csv"
[10] "rodentia.csv"
[11] "Rplot.tiff"
[12] "rsconnect"
¡Ahora que ya escogimos la carpeta donde trabajaremos, podemos comenzar!
2. ALGUNAS FUNCIONES BÁSICAS DEL R Y CREANDO OBJETOS
2.1 OPERACIONES BÁSICAS
En el R podemos hacer operaciones matemáticas simples, aquí les dejo algunos ejemplos:
1+1
[1] 2
18-9
[1] 9
78*89
[1] 6942
8*9
[1] 72
4^2
[1] 16
4/8-9
[1] -8.5
log(25)
[1] 3.218876
rep(x =2, times = 4)
[1] 2 2 2 2
en la función rep: x y times son argumentos
2.2 CREANDO OBJETOS
Crear objetos en el R facilita mucho la manipulación y organización de los datos, por lo tanto, es indicado realizar este proceso utilizando nombres que faciliten nuestro trabajo. En el siguiente ejemplo veremos como una operación tan compleja puede llamarse de la forma más sencilla:
suma <- (18+(56*8))^9
suma
[1] 1.036271e+24
resultado <- (25*87)/10
resultado
[1] 217.5
facil <- ((56*4810)^6)/8
facil
[1] 4.774288e+31
division <- facil/facil
division
[1] 1
¡ATENCIÓN: al crear dos objetos con el mismo nombre, el primero será reemplazado por el último!
También podemos crear objetos diferentes en la misma linea:
x <- 1; y <- 2; z <- 3
x; y; z
[1] 1
[1] 2
[1] 3
a <- 5; b <- 6; c <- 8
a; b; c
[1] 5
[1] 6
[1] 8
2.3 VECTORES
Aquí veremos ejemplos de como crear vectores:
caracter <- c("Brasil", "Peru", "Argentina", "Colombia")
logico <- caracter == "Peru"
logico
[1] FALSE TRUE FALSE FALSE
numeros <- c(2, 5, 10, 20, 3, 15)
logico_n <- numeros > 4
logico_n
[1] FALSE TRUE TRUE TRUE FALSE TRUE
3. ABRIENDO Y MANIPULANDO DATOS
Para abrir nuestra base de datos podemos usar el siguiente comando (este ejemplo sirve para archivos .csv)
Para este ejemplo usaremos el archivo de ratones que fue disponibilizado
read.csv(“trait_data_reported.csv”)
!!! Como más arriba aprendimos a nombrar nuestras funciones, aquí usaremos lo aprendido, nombraremos nuestros datos de la siguiente forma:
mamiferos <- read.csv(“trait_data_reported.csv”)
A partir de ahora, cada vez que querramos llamar nuestra base dados sólo bastará llamarla como ratones
!!!Atención: Los nombres deben estar escritos igualmente, si se tiene algún error por más mínimo que sea, el R no lo leerá, intenten usando “Ratones” o “ratónes”, y vean el error:
otros comandos importantes son:
Abrirá tu tabla en una pestaña nueva:
este comando mostrará la estructura de nuestros datos:
str(ratones)
'data.frame': 2583 obs. of 60 variables:
$ order : chr "Rodentia" "Rodentia" "Rodentia" "Rodentia" ...
$ family : chr "Muridae" "Muridae" "Cricetidae" "Cricetidae" ...
$ genus : chr "Abditomys" "Abeomelomys" "Abrawayaomys" "Abrawayaomys" ...
$ species : chr "latidens" "sevia" "chebezi" "ruschii" ...
$ iucn2020_binomial : chr "Abditomys latidens" "Abeomelomys sevia" "Abrawayaomys chebezi" "Abrawayaomys ruschii" ...
$ phylacine_binomial : chr "Abditomys latidens" "Abeomelomys sevia" "Not recognised" "Abrawayaomys ruschii" ...
$ adult_mass_g : num 268.1 57.9 NA 63 265.5 ...
$ adult_brain_mass_g : num NA 1.49 NA NA NA NA NA NA NA NA ...
$ adult_body_length_mm : num 228 159 NA NA 250 ...
$ adult_forearm_length_mm : logi NA NA NA NA NA NA ...
$ max_longevity_d : num NA NA NA NA 852 ...
$ maturity_d : num NA NA NA NA NA NA NA NA NA NA ...
$ female_maturity_d : num NA NA NA NA NA NA NA NA NA NA ...
$ male_maturity_d : num NA NA NA NA NA NA NA NA NA NA ...
$ age_first_reproduction_d: num NA NA NA NA NA NA NA NA NA NA ...
$ gestation_length_d : num NA NA NA NA NA ...
$ teat_number_n : int NA 4 NA NA NA NA NA NA NA NA ...
$ litter_size_n : num NA 1 NA NA 3 ...
$ litters_per_year_n : num NA NA NA NA 2 NA NA NA NA NA ...
$ interbirth_interval_d : num NA NA NA NA NA NA NA NA NA NA ...
$ neonate_mass_g : num NA NA NA NA NA ...
$ weaning_age_d : num NA NA NA NA NA NA NA NA NA NA ...
$ weaning_mass_g : num NA NA NA NA NA NA NA NA NA NA ...
$ generation_length_d : num NA NA NA NA NA NA NA NA NA NA ...
$ dispersal_km : num 0.514 0.221 NA 0.232 0.511 0.384 0.463 0.463 0.463 0.463 ...
$ density_n_km2 : num NA NA NA NA 102 ...
$ hibernation_torpor : int NA 0 NA 0 0 NA NA 0 NA NA ...
$ fossoriality : int NA 2 NA NA 2 NA NA 2 NA NA ...
$ home_range_km2 : num NA NA NA NA NA NA NA NA NA NA ...
$ social_group_n : num NA NA NA NA NA NA NA NA NA NA ...
$ dphy_invertebrate : num 0 19 NA 11 0 0 0 0 0 0 ...
$ dphy_vertebrate : num 0 3 NA 1 0 0 0 0 0 0 ...
$ dphy_plant : num 100 78 NA 88 100 100 100 100 100 100 ...
$ det_inv : int 0 NA NA NA 0 0 NA 0 NA NA ...
$ det_vend : int 0 NA NA NA 0 0 NA 0 NA NA ...
$ det_vect : int 0 NA NA NA 0 0 NA 0 NA NA ...
$ det_vfish : int 0 NA NA NA 0 0 NA 0 NA NA ...
$ det_vunk : int 0 NA NA NA 0 0 NA 0 NA NA ...
$ det_scav : int 0 NA NA NA 0 0 NA 0 NA NA ...
$ det_fruit : int 0 NA NA NA 0 0 NA 0 NA NA ...
$ det_nect : int 0 NA NA NA 0 0 NA 0 NA NA ...
$ det_seed : int 0 NA NA NA 0 0 NA 0 NA NA ...
$ det_plantother : int 100 NA NA NA 100 100 NA 100 NA NA ...
$ det_diet_breadth_n : int 1 NA NA NA 1 1 NA 1 NA NA ...
$ trophic_level : int 1 2 NA 2 1 1 1 1 1 1 ...
$ foraging_stratum : chr "Ar" "G" NA "G" ...
$ activity_cycle : int NA 1 NA NA 1 1 NA 1 NA NA ...
$ freshwater : int 0 0 0 0 0 0 0 0 0 0 ...
$ marine : int 0 0 0 0 0 0 0 0 0 0 ...
$ terrestrial_non.volant : int 1 1 1 1 1 1 1 1 1 1 ...
$ terrestrial_volant : int 0 0 0 0 0 0 0 0 0 0 ...
$ upper_elevation_m : num NA 3100 NA NA 4000 2270 3000 5000 NA 2900 ...
$ lower_elevation_m : num NA 1400 NA NA 0 1800 3000 3700 3800 1100 ...
$ altitude_breadth_m : num NA 1700 NA NA 4000 470 0 1300 NA 1800 ...
$ island_dwelling : int NA 0 NA 0 0 NA NA 0 NA NA ...
$ island_endemicity : logi NA NA NA NA NA NA ...
$ disected_by_mountains : int NA 0 NA 0 0 NA NA 1 NA NA ...
$ glaciation : int NA 0 NA 0 0 NA NA 0 NA NA ...
$ biogeographical_realm : chr "Indomalayan" "Australasian" "Neotropical" "Neotropical" ...
$ habitat_breadth_n : chr "1" "2" "1" "1" ...
Intentemos jugar con nuestros datos calculando el promedio:
mean(ratones$adult_mass_g)
[1] NA
mean(ratones$litter_size_n)
[1] NA
¡ERROR!
Es porque tenemos datos faltantes en nuestra base de datos
Solucionemos:
head(ratones$adult_mass_g)
[1] 268.09 57.89 NA 62.99 265.50 158.00
vemos que tenemos “NA” en nuestra base de datos, en este caso tenemos dos opciones. Borrar todas las lineas con NA manualmente, o usar el argumento na.rm=T para todas los comandos como se muestra a continuación:
Calculando el promedio
mean(ratones$adult_mass_g, na.rm=T)
[1] 475.5928
Calculando la mediana
median(ratones$adult_mass_g, na.rm = T)
[1] 73.4
Calculando el valor mínimo y máximo
min(ratones$adult_mass_g, na.rm = T)
[1] 3.009
max(ratones$adult_mass_g, na.rm = T)
[1] 93333.3
max(ratones$litter_size_n, na.rm=T)
[1] 9.5
3. VIZUALIZANDO DATOS
3.1 HISTOGRAMAS
Podemos crear un histograma con nuestros dados usando el siguiente comando:
veáse que aún no usamos ningún paquete específico
3.2 SCATTERPLOT
Podemos crear un scatterplot con nuestros dados usando el siguiente comando:
Siempre que separemos con una coma (como en el ejemplo de arriba), el R entenderá que se trata de una relación entre las variables dependiente (eje X) e independiente (eje Y)
Podemos usar también datos transformados, utilizando a función log:
3.3 BOXPLOT
Podemos crear un boxplot con nuestros dados usando el siguiente comando:
Podemos cambiar el color, adicionar un título y nombres a nuestros ejes X, Y de nuestro gráfico usando el siguiente comando:
¡Existen muchos sites donde podemos encontrar muchas opciones de colores RGB! aquí dejo una opción, aquí otra opción.Y también podemos cambiar la forma de los puntos en el scatterplotaquí una opción
Podemos hacer muchas modificaciones y dejar nuestro gráfico lo más personalizado posible usando los siguientes códigos:
Podemos adicionar otras personalizaciones como: bg: color del relleno, lwd: tamaño del borde, cex: tamaño de los puntos, entre otros4. GUARDANDO NUESTRO GRÁFICO
Para guardar nuestros gráficos en formato .tiff (pero también puede guardar en jpeg, png, svg, entre otros) directamente en nuestra carpeta, se usa el siguiente comando:
tiff("grafico1")
plot(log(ratones$adult_mass_g, ratones$adult_body_length_mm), xlab="peso", ylab="longitud", main = "Relación entre peso y longitud de ratones adultos", col ="#62a8ab", pch=24, bg="cyan", lwd=1, cex=1)
dev.off
function (which = dev.cur())
{
if (which == 1)
stop("cannot shut down device 1 (the null device)")
.External(C_devoff, as.integer(which))
dev.cur()
}
<bytecode: 0x000001c6dd1a82d8>
<environment: namespace:grDevices>