Buscar y relacionar datos en R

Funciones match y which

Los datos en R no son directamente relacionales como lo son en una base de datos en SQL. Sin embargo, existen funciones que permitan buscar datos, y manejar relaciones entre objetos de datos.

1 Función which

1.1 Vectores

La función which permite obtener los indices de un vector de modo logico:

which(c(T,F,F,T))
[1] 1 4

Así se pueden extraer resultados de una prueba lógica en un gran vector de datos:

vecLeyNormal <- rnorm(1000, mean = 0, sd = 1)
(sup3 <- which(vecLeyNormal > 3))
integer(0)
vecLeyNormal[sup3]
numeric(0)

1.2 Arrays

load("../Datos/bog_chinga.RData")
mat_bog_chinga
         Canis lupus Felis catus Tramarctos ornatus
Bogotá          3000        1000                  0
Chingaza         100           0                 50
         Odocoileus viginianus
Bogotá                       0
Chingaza                   200

La función which permite tambien trabajar con arrays con el argumento array.ind

(sup0 <- which(mat_bog_chinga > 0, arr.ind = T))
         row col
Bogotá     1   1
Chingaza   2   1
Bogotá     1   2
Chingaza   2   3
Chingaza   2   4
mat_bog_chinga[sup0]
[1] 3000  100 1000   50  200

2 Función match

La función match permite buscar correspondencias entre 2 vectores:

(var <- c("A","A","b","B","Z","E","I"))
[1] "A" "A" "b" "B" "Z" "E" "I"
LETTERS
 [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P"
[17] "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"
m_var_LET<-match(var,LETTERS)
LETTERS[m_var_LET]
[1] "A" "A" NA  "B" "Z" "E" "I"