Está en la página 1de 12

Qué es R

R es un conjunto integrado de funciones de software libremente disponibles para la


manipulación de datos, el cálculo y la visualización gráfica. Incluye:

 una instalación efectiva de manejo y almacenamiento de datos,


 un conjunto de operadores para cálculos en matrices, en particular matrices,
 una colección grande, coherente e integrada de herramientas intermedias para el
análisis de datos, instalaciones gráficas para el análisis de datos y visualización en
pantalla o impresa, y
 un lenguaje de programación bien desarrollado, simple y efectivo que incluye
condicionales, bucles, funciones recursivas definidas por el usuario e instalaciones de
entrada y salida,
 una gran cantidad de paquetes creados por el usuario que amplían sus capacidades,
disponibles en CRAN y Github, incluidos los paquetes de mapeo, biología y ecología.

Instalación
Este manual asume que tiene R y RStudio instalados en su computadora.

R se puede descargar aquí .

RStudio es un entorno para desarrollar usando R. Se puede descargar aquí . Necesitarás la


versión de escritorio para tu computadora.

Fundamentos de RStudio
RStudio tiene cuatro paneles:

 Arriba a la izquierda: el editor. Este panel se cerrará cuando inicie RStudio. Aquí
puede editar y ejecutar scripts. El editor tiene un botón para ejecutar la línea o
selección actual, y un botón para ejecutar todo el script.
 Abajo a la izquierda: la consola. Aquí puede ingresar comandos o depurar su código.
 Arriba a la derecha: entorno e historia.
 Abajo a la derecha: archivos, tramas y ayuda.

Un archivo R con el código utilizado en esta introducción está disponible aquí .

Para obtener ayuda sobre una función, escriba el nombre de la función con un signo de
interrogación al frente:

?data.frame
Si no encuentra documentación, puede intentar:

??data.frame

R paquetes
Los paquetes R son bibliotecas de código reutilizables. Para instalar y cargar paquetes desde
la consola (por ejemplo, el paquete ggplot2 R), haga lo siguiente:

install.packages("ggplot2")
library(ggplot2)
Esto solo funciona para paquetes que se publican en CRAN . Hoy en día los paquetes se
publican a menudo en GitHub. Para instalar esos paquetes, podemos usar
la install_githubfunción en el devtoolspaquete. Aquí usamos la sintaxis de dos puntos para
cargar automáticamente el devtoolspaquete.

install.packages("devtools")
devtools::install_github("ropensci/rgbif")
Tenga en cuenta que varios paquetes incluyen una viñeta, que le brinda una introducción al
estilo del tutorial del paquete R. Para ver las viñetas de, por ejemplo, ggplot2, haz:

browseVignettes(package="ggplot2")

# Directly open a vignette


vignette("ggplot2-specs")

Tipos de datos
Generalmente, al hacer la programación en cualquier lenguaje de programación, necesita usar
varias variables para almacenar información diversa. Los tipos de datos utilizados
frecuentemente para almacenar variables son:

 Vectores
 Matrices
 Marcos de datos
 Liza
 Factores

Vectores
Los vectores son la estructura de datos más básica en R. Estas son listas ordenadas de
valores de una determinada clase, como numérica, de caracteres o lógica. Los valores únicos
son vectores de longitud 1:

> a <- 1
> a
[1] 1
> class(a)
[1] "numeric"
> length(a)
[1] 1
> b <- "banana"
> b
[1] "banana"
> class(b)
[1] "character"
> d <- FALSE
> d
[1] FALSE
> class(d)
[1] "logical"
> a <- c(1, 2)
> a
[1] 1 2
> b <- seq(1, 10)
> b
[1] 1 2 3 4 5 6 7 8 9 10
> length(b)
[1] 10
Un vector vacío se conoce como NULLo c().

Matrices
Las matrices son estructuras de datos bidimensionales. De nuevo, todos los elementos son de
la misma clase.

> matrix(1:6, nrow=3, ncol=2)


[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6

Marcos de datos
En marcos de datos, las columnas pueden ser de diferentes clases.

> d <- data.frame(a=c(5, 6, 7), b=c("x", "y", "z"))


> d
a b
1 5 x
2 6 y
3 7 z
> d$a
[1] 5 6 7
> d[,1]
[1] 5 6 7
> d[,"a"]
[1] 1 2 3
> d[1]
a
1 5
2 6
3 7
> d[,1,drop=FALSE]
a
1 5
2 6
3 7
> d[1,]
a b
1 5 x
El dplyrpaquete tiene un contenedor de marco de datos, que produce resultados más bonitos
al imprimir:

install.packages("dplyr") # skip this if you already have 'dplyr'


library(dplyr)
data(iris)
tbl_df(iris)
Liza
Una lista es una colección de objetos.

> a <- data.frame(a=c(1, 2, 3), b=c("x", "y", "z"))


> l <- list(a=a, b=1)
> l
$a
a b
1 1 x
2 2 y
3 3 z

$b
[1] 1
Tres formas diferentes de acceder al segundo elemento "b"

> l$b
[1] 1
> l[[2]]
[1] 1
> l[["b"]]
[1] 1

Escribir y leer datos


Archivos de texto delimitados
data <- data.frame(x=10:15, y=40:45) # some data
# tab separated
write.table(data, "data.txt", sep="\t", dec=".", row.names=FALSE)
data <- read.table("data.txt", header=TRUE, sep="\t", dec=".", stringsAsFactors=
FALSE)
# comma , separated
write.csv(data, "data.csv", row.names=FALSE)
data <- read.csv("data.csv", stringsAsFactors=FALSE)
# dotcomma ; separated
write.csv2(data, "data2.csv", row.names=FALSE)
data <- read.csv2("data2.csv", stringsAsFactors=FALSE)

Archivos de Excel
Los archivos de Excel se pueden leer y escribir usando los paquetes xlsx y
openxlsx. Dependiendo de la configuración de su sistema, puede experimentar problemas al
instalar cualquiera de estos paquetes (por ejemplo, xlsx tiene una dependencia de Java). Los
paquetes de openxlsx requieren una versión R reciente.

install.packages("openxlsx")
library(openxlsx)
read.xlsx()toma dos parámetros: el nombre del archivo de Excel y la hoja que desea leer. La
hoja puede ser un nombre o un índice, en este caso 1para leer la primera hoja.

library(openxlsx)
data <- data.frame(x = 10:15, y = 40:45) # generate some data
write.xlsx(data, "data.xlsx", sheetName = "intro", row.names = FALSE) # write to
Excel
data2 <- read.xlsx("data.xlsx", 1)
data2 <- read.xlsx("data.xlsx", sheet = "intro")

Archivos ZIP
Este ejemplo muestra cómo descargar un archivo ZIP y leer uno de los archivos que contiene:

temp <- tempfile()


download.file("http://ipt.vliz.be/eurobis/archive.do?r=nsbs&v=1.1", temp)
data <- read.table(unz(temp, "occurrence.txt"), sep="\t", header=TRUE, stringsAs
Factors=FALSE)
View(data) # inspect the data

Shapefiles
Shapefiles se pueden leer usando el rgdalpaquete. El siguiente ejemplo también transforma
los datos, por lo que se puede visualizar fácilmente usando ggplot2:

library(maptools)
library(rgdal)
library(ggplot2)

download.file("http://iobis.org/geoserver/OBIS/ows?service=WFS&version=1.0.0&req
uest=GetFeature&typeName=OBIS:summaries&outputFormat=SHAPE-ZIP", destfile="summa
ries.zip")
unzip("summaries.zip")

shape <- readOGR("summaries.shp", layer="summaries")


shape@data$id <- rownames(shape@data)
df <- fortify(shape, region="id")
data <- merge(df, shape@data, by="id")

# plot the number of species


ggplot() +
geom_polygon(data=data,
aes(x=long, y=lat, group=group, fill=s),
color='gray', size=.2) +
scale_fill_distiller(palette = "Spectral")

Trabajando con datos


Inspección de datos
library(robis)
library(dplyr)

data <- occurrence("Sargassum")

# for this example, convert back from data frame tbl (dplyr) to standard data fr
ame
data <- as.data.frame(data)

head(data) # first 6 rows


head(data, n = 100) # first 100 rows
dim(data) # dimensions
nrow(data) # nmuber of rows
ncol(data) # number of columns
names(data) # column names
str(data) # structure of the data
summary(data) # summary of the data
View(data) # View the data

# now convert to data frame tbl (dplyr)


data <- tbl_df(data)

data
head(data)
print(data, n = 100)

Manipulando datos
Filtración
library(robis)
library(dplyr)

data <- occurrence("Sargassum")


data %>% filter(scientificName == "Sargassum muticum" & yearcollected > 2005)

Reordenando
data %>% arrange(datasetName, desc(eventDate))

Selección y cambio de nombre de columnas


data %>% select(scientificName, eventDate, lon=decimalLongitude, lat=decimalLati
tude)
select()se puede usar con distinct()para encontrar combinaciones únicas de valores:

data %>% select(scientificName, locality) %>% distinct()


Agregar columnas
data %>% tbl_df %>% mutate(zone = .bincode(minimumDepthInMeters, breaks=c(0, 20,
100))) %>% select(minimumDepthInMeters, zone) %>% filter(!is.na(zone)) %>% prin
t(n = 100)

Agregación
data %>% summarise(lat_mean = mean(decimalLatitude), lat_sd = sd(decimalLatitude
))
data %>% group_by(scientificName) %>% summarise(records=n(), datasets=n_distinct
(datasetName))

Reestructuración (formato matricial a largo)


Los datos de biodiversidad a menudo se proporcionan como una matriz de sitio x especie. El
paquete reshape2 se puede usar para convertir estas matrices en un formato de tabla
larga. Para demostrar esta funcionalidad, carguemos una matriz de sitio x especie que se
incluye en el paquete vegano (que se centra en el análisis de datos de biodiversidad).

Primero instale y cargue los paquetes de vegan en reshape2:

install.packages("vegan")
install.packages("reshape2")
library(vegan)
library(reshape2)
El conjunto de datos que usaremos es el conjunto de datos BCI, estos son conteos de árboles
en parcelas en la isla Barro Colorado. Cargue los datos con data():

data("BCI")
Cada fila en esta matriz representa un diagrama. Esta matriz no tiene una columna para
nombres de sitios / parcelas, así que agreguemos que:

BCI$plot <- row.names(BCI)


Ahora usa la función de fusión para convertir de matriz a formato largo. Pase los siguientes
argumentos: variable.name(esto corresponde a las columnas, por lo que los nombres
científicos), value.name(un nombre para los valores) y id.vars(las variables no medidas, en
este caso, la gráfica).

long <- melt(BCI, variable.name = "scientificName", value.name = "count", id.var


s = "plot")
Ahora tiene sus datos en el formato largo:

> head(long)
plot scientificName count
1 1 Abarema.macradenia 0
2 2 Abarema.macradenia 0
3 3 Abarema.macradenia 0
4 4 Abarema.macradenia 0
5 5 Abarema.macradenia 0
6 6 Abarema.macradenia 0

Reestructuración (formato largo a matriz)


Este ejemplo convierte un conjunto de datos de OBIS a un formato de matriz, que es más
adecuado para el análisis de la comunidad:

library(robis)
library(reshape2)

data <- occurrence(resourceid = 586)


wdata <- dcast(data, locality ~ scientificName, value.var = "individualCount", f
un.aggregate = sum)

Trazando
En este ejemplo, los datos para una especie se extraen de un conjunto de datos OBIS. La
densidad y la profundidad se visualizan utilizando el ggplot2paquete:

library(robis)
library(dplyr)
library(reshape2)
library(ggplot2)

data <- occurrence(resourceid = 586)

afil <- data %>% filter(scientificName == "Amphiura filiformis") %>% group_by(lo


cality) %>% summarise(n = mean(individualCount), lon = mean(decimalLongitude), l
at = mean(decimalLatitude), depth = mean(minimumDepthInMeters))

ggplot() + geom_point(data = afil, aes(lon, lat, size = n, colour = depth)) +


scale_colour_distiller(palette = "Spectral") +
theme(panel.background = element_blank()) + coord_fixed(ratio = 1) + scale_siz
e(range = c(2, 12))

Cartografía
El leafletpuede usarse para crear mapas interactivos basados en la web. El siguiente
ejemplo muestra los resultados de un análisis atípico de ocurrencias
de estrognemia de Verruca :

library(leaflet)

data <- occurrence("Verruca stroemia")

data$qcnum <- qcflags(data$qc, c(24, 28))

colors <- c("red", "orange", "green")[data$qcnum + 1]

m <- leaflet()
m <- addProviderTiles(m, "CartoDB.Positron")
m <- addCircleMarkers(m, data=data.frame(lat=data$decimalLatitude, lng=data$deci
malLongitude), radius=3, weight=0, fillColor=colors, fillOpacity=0.5)
m

También podría gustarte