8.11.15

Indexación

Indexación

La indexación es la selección de subconjuntos de datos de un vector o de datos estructurales, para esto se utilizan los operadores de selección [ ], [[ ]] y $. Es un poco diferente para cada uno objeto, y existen básicamente tres tipos de indexación: por vector lógico, por números enteros y selección negativa.



Vectores: aquí solamente especificamos la posición del o los datos que queremos seleccionar con un solo valor.
> data<--5:5         # creamos vector de -5 a 5
> data
[1] -5 -4 -3 -2 -1  0  1  2  3  4  5
> data[2]            # selección del valor en la segunda posición
[1] -4
> data[c(1,3,5,10)]  # selección en la posición 1, 3, 5 y 10
[1] -5 -3 -1  4
> data[-1]           # no seleccionar primer valor
[1] -4 -3 -2 -1  0  1  2  3  4  5
> data[c(-3:-6)]     #  no seleccionar del tercero al sexto valor
[1] -5 -4  1  2  3  4  5
> data[data<0]       # seleccionar los valores menor a 0
[1] -5 -4 -3 -2 -1
> data[data>=0]      ## seleccionar los valores mayor igual a 0
[1] 0 1 2 3 4 5

Matrices: para matrices cambia, como son datos dimensionales (x,y) se necesita especificar los dos valores, el primero es la fila y el segundo la columna.
> mtx<-matrix(1:20,5,4)
> mtx
     [,1] [,2] [,3] [,4]
[1,]    1    6   11   16
[2,]    2    7   12   17
[3,]    3    8   13   18
[4,]    4    9   14   19
[5,]    5   10   15   20
> mtx[1,2]
[1] 6
> mtx[,3]
[1] 11 12 13 14 15
> mtx[5,]
[1]  5 10 15 20
> mtx[,-2]
     [,1] [,2] [,3]
[1,]    1   11   16
[2,]    2   12   17
[3,]    3   13   18
[4,]    4   14   19
[5,]    5   15   20
> mtx[c(-1,-3,-5),-2]
     [,1] [,2] [,3]
[1,]    2   12   17
[2,]    4   14   19
> mtx[mtx>10]
 [1] 11 12 13 14 15 16 17 18 19 20
> mtx[mtx>10 | mtx<4]
 [1]  1  2  3 11 12 13 14 15 16 17 18 19 20

Arrays: en los arrays son multidimensionales, se necesita especificar tres valores el número de filar, el número de columnas y la matriz.
> Arrays<-array(rpois(36,10),dim=c(3,4,3))
> Arrays
, , 1
 
     [,1] [,2] [,3] [,4]
[1,]    9    7    8   10
[2,]   10    7   10    9
[3,]   11   12    9   16
 
, , 2
 
     [,1] [,2] [,3] [,4]
[1,]    8   13    4    7
[2,]   13    9    9   10
[3,]   12   11   12   11
 
, , 3
 
     [,1] [,2] [,3] [,4]
[1,]    9   13    6   12
[2,]   12    8   10   11
[3,]    9    6    8   10
 
> Arrays[1,2,3]    # la fila 1, de la columna 2 y de la matriz 3
[1] 13
> Arrays[1,2,]     # fila 1, de la columna 2 y de todas de las matrices
[1]  7 13 13
> Arrays[1,,2]    # la fila 1, de la matriz 2
[1]  8 13  4  7
> Arrays[,2,2]   # todas las filas, de la columna 2 y de la matriz 2
[1] 13  9 11
> Arrays[1,,]     # la fila 1, de todas las columnas y matrices
     [,1] [,2] [,3]
[1,]    9    8    9
[2,]    7   13   13
[3,]    8    4    6
[4,]   10    7   12
> Arrays[,2,]      # todas las filas, la columna 2, de todas las matrices
     [,1] [,2] [,3]
[1,]    7   13   13
[2,]    7    9    8
[3,]   12   11    6
> Arrays[,,1]         # todas las filas y columnas de la matriz 1
     [,1] [,2] [,3] [,4]
[1,]    9    7    8   10
[2,]   10    7   10    9
[3,]   11   12    9   16

Data Frames: Los data frames ademas de utlizar los corchetes, se puede utilizar el operador de moneda $, 
>  edad<-round(rnorm(10,50,10))
>  sexo<-rep(c("H","M"),5)
>  sueldo<-round(rnorm(10,10000,100),2)
>  data<-data.frame(edad,sexo,sueldo)
>  data
   edad sexo   sueldo
1    42    H 10260.18
2    47    M 10018.01
3    60    H  9957.56
4    61    M 10025.48
5    48    H  9963.75
6    61    M  9836.52
7    50    H 10142.61
8    39    M 10044.22
9    40    H 10241.48
10   49    M 10150.84
> data[data$sexo=="H",]  # seleccionamos los datos de la variable sexo igual a H
  edad sexo   sueldo       # crea un sub-dataframes con los datos
1   42    H 10260.18
3   60    H  9957.56
5   48    H  9963.75
7   50    H 10142.61
9   40    H 10241.48
> data$edad[data$sueldo>10000] # selección de dato de edad a partir del sueldo, no es necesario especificar la dimensionalidad.
[1] 42 47 61 50 39 40 49   # crea un vector unidimensional de los datos

Listas: como mencionamos las listas son un caso especial, podemos utilizar los tres operadores de selección [ ], [[ ]] y $. La diferencia principal entre [ ] y [[ ]], es que el primero genera un sublista de los datos seleccionados y el segundo obtenemos los datos como vector unidimensional, al igual que utilizar $. Y como sabes cada una se analiza diferente, y si no se toma esto puede causar una forma incorrecta de analizarlos.
>  edad<-round(rnorm(10,40,10))
>  sexo<-gl(2,3,10,labels = c("M","H"))
>  SS<-rep(c(F,T),5)
>  Listas<-list(Edad=edad,Sexo=sexo,SeguroSocial=SS)
>  Listas
$Edad
 [1] 36 32 40 39 16 37 41 35 35 36
 
$Sexo
 [1] M M M H H H M M M H
Levels: M H
 
$SeguroSocial
 [1] FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE
 
> Listas["Edad"]
$Edad
 [1] 36 32 40 39 16 37 41 35 35 36
 
> Listas[["Edad"]]
 [1] 36 32 40 39 16 37 41 35 35 36
> Listas$Edad
 [1] 36 32 40 39 16 37 41 35 35 36




Con esto terminamos de ver las Listas. Continua aprendiendo y nos vemos en el próximo post.
                                                                                                                             

No hay comentarios.:

Publicar un comentario