Subconjuntos de datos

Luis Vargas (l.vargas@cgiar.org)

August 16, 2017

Subconjuntos de datos

Obtener un data frame de datos

library(readxl)
datos <- read_excel("./datos/renUtiOax.xlsx", sheet = "datosRendimiento")
names(datos)
##  [1] "ID.de.la.bitácora"                                                             
##  [2] "ID.de.tipo.de.bitácora..clave.foránea."                                        
##  [3] "Tipo.de.parcela..testigo.o.innovación."                                        
##  [4] "Nombre.del.cultivo.cosechado"                                                  
##  [5] "Nombre.del.producto.de.interés.económico.obtenido"                             
##  [6] "Unidad.de.medida.de.rendimiento.para.el.producto.de.interés.económico.obtenido"
##  [7] "Uso.que.le.da.al.producto.de.interés.económico.obtenido"                       
##  [8] "Rendimiento..t.ha."                                                            
##  [9] "tipoProduccion"                                                                
## [10] "ID.de.la.parcela"                                                              
## [11] "Año"                                                                           
## [12] "Ciclo.agronómico"                                                              
## [13] "Estado"                                                                        
## [14] "Municipio"                                                                     
## [15] "Nombre.del.Hub"                                                                
## [16] "costos"                                                                        
## [17] "Ingresos"                                                                      
## [18] "utilidad"                                                                      
## [19] "Region"

Obtener una columna, datos[filas, columnas]

utilidad <- datos[,18]
utilidad
##   [1]  15804.000  22474.000   5225.000   1935.000   3745.000  12800.900
##   [7]   7675.000   7490.900   6817.100  10232.100   1545.000   2885.000
##  [13]  -6109.000  -6169.500 -10919.000 -12535.900   -200.000   3160.000
##  [19]  -1100.000   1470.000   4512.500  -8844.500 -10392.500  -4883.500
##  [25]  32970.000  19748.000  20104.250  21300.000  29950.500  17800.000
##  [31]   6308.000   8975.000   3110.000   5645.000   4780.000   5957.900
##  [37]   1828.000   3737.800    834.000  10169.000   1390.000  10445.000
##  [43]   4252.900   5867.800  -1196.000   8444.000   6697.800   2199.970
##  [49]  11478.000   2139.900   3129.790   3319.900    518.000   9909.000
##  [55]  10634.000  12840.000  16105.000   7911.002  12786.668  14092.500
##  [61]  19647.500   2565.000   8006.167   -842.100    408.000   5207.900
##  [67]   1478.000    717.990   7797.900   2307.900   1668.000   1427.900
##  [73]    778.000   7087.800  24185.000     -2.900   6810.000  16270.000
##  [79]  13605.000   9472.000  -9826.000  -4425.942  -7382.974  -2700.250
##  [85]  17639.750  13806.000  10736.000   2269.000  11445.980   -845.000
##  [91]  -6751.250   1365.000   4376.000   9495.000 -11445.800  -9525.800
##  [97]   4231.000  28235.000  -4691.000  -4567.250  -9005.200  -4323.200
## [103]  -2062.200  -3960.200  12454.000  23155.000   6325.000   3434.000
## [109]    224.000  11835.000  17345.000   1881.500  -6834.000   2912.000
## [115]   6801.000   5251.400   4335.000   6150.000   5933.000   5466.200
## [121]  15750.100   7577.000  15427.000   6535.000  10150.000   4680.000
## [127]   5669.000  15340.000  -4743.500  -4630.500   1171.000  28398.000
## [133]   9320.000  19829.000   4680.000   2370.000   2400.000   1188.000
## [139]   1538.000  12758.000   4240.800   5074.000   3185.000   5168.000
## [145]  -2456.000   -472.700  -3350.000  -2311.000    -11.000   2834.000
## [151]   9434.000   -840.000   2328.000   2048.000   2040.000   3010.000
## [157]   5129.900   2410.000   6854.000  13094.000   4445.000  11490.000
## [163]   6574.600   6770.200   4774.600   4539.600   4310.000   7470.000
## [169]  21602.400  18940.500  30620.500  17940.500  23220.500   2025.000
## [175]   1150.000   3110.000   3791.500  -3510.000  -1990.000  -2947.200
## [181]   5942.000  -1348.500  11200.000   6592.000   7259.500   4159.500
## [187]  10300.000  -3852.000  -7830.000  -6379.000  -1733.500  -6395.500
## [193]  -7982.500   1350.000   2620.000   1555.000   -730.000    155.000
## [199]   3000.000   2839.000   4614.000   3309.000   3952.500   3224.999
## [205]   2932.499   2632.499   4012.499   3653.499  11925.000   2242.498
## [211]   3479.999   8300.000   2463.166   2954.999   3742.499   2742.499
## [217]   3214.999   4894.999   4147.500   3167.499  21410.000  10294.666
## [223]  14001.664  17503.331   7554.998   3580.000   4960.000   3510.000
## [229]   5375.950  12090.000   8190.000  11025.000   5970.000   6445.000
## [235]   6445.000   6200.000  -5831.000  -2680.000  -3928.500   1399.000
## [241]   9870.000   4240.000   3812.499   4514.999   4267.500   3607.499
## [247]   2715.000   5050.000   4610.000  11810.000  18560.000   4510.000
## [253]   5270.000  12000.000   5250.000   6520.000   3685.000   1385.000
## [259]   8635.000   4410.000   2415.000   6680.000   4650.000   1610.000
## [265]   3600.000   3600.000   5810.000   3525.000   5790.000   5900.000
## [271]   6055.000  -3667.000   1155.000    585.000   1760.000   1450.000
## [277]   2863.000   2044.000   2264.000   2227.000   2842.000   2913.000
## [283]   2269.000   2332.499   -601.400   6234.000   -601.400   -601.850
## [289]   -601.400  14130.000   -701.750   -701.300   -601.600   -601.600
## [295]   -601.000   -601.000   -601.400   -601.000  14760.000  17082.000
## [301]   9250.000   6760.000  -2602.700  -2503.050   -302.000   4833.000
## [307]   5860.000   5180.000   3370.000   4080.000   4680.000   5618.000
## [313]   5112.000  17280.000  -4207.950  -4209.950   2140.000   7878.000
## [319]   3835.000   3260.000    135.000  -1255.000  12459.000   9204.000
## [325]   -155.000  -4741.000  -5690.000    714.000   7076.500  12427.500
## [331]   5810.000   5024.000   9931.000  16038.000  -1399.600  -1399.600
## [337]    225.000    710.000    330.000    710.000    990.000    470.000
## [343]    520.000    850.000    520.000   2040.000   2150.000   1400.000
## [349]   1400.000   2000.000   1800.000   2350.000   1550.000   2550.000
## [355]   2150.000   2000.000  -3360.000  -5580.000    804.000  -4330.000
## [361]  -3630.000  -5320.000  -3715.000   2189.000   6595.000   8185.500
## [367]   -910.000  20780.000  12445.500  17927.000   8970.800  13030.550
## [373]  15690.800   9590.800  10554.800   8020.800  12817.000   7930.000
## [379]  11327.000   9985.000   7585.000  -4980.000  -2925.000  -6109.000
## [385]  -6169.500 -10919.000  -8844.500 -10392.500  -4883.500  19971.000
## [391]  24942.750  -6146.250   3985.000    550.000   1580.000   3566.000
## [397]   5957.900   1828.000   4252.900   1780.000   2199.970   2139.900
## [403]   3129.790   4990.000   7643.000   3319.900   1478.000   2307.900
## [409]   6480.000  13763.000  16992.000  15700.000  10000.000   1881.500
## [415]  -6834.000   2328.000   3010.000  17655.000  -7968.160  -6379.000
## [421]  -1733.500  -6395.500  -7982.500  -1982.500   9270.000   7252.000
## [427]  -2602.700  -2503.050  -5648.000

Otra forma de obtener una columna

utilidad_2 <- datos$utilidad
utilidad_2
##   [1]  15804.000  22474.000   5225.000   1935.000   3745.000  12800.900
##   [7]   7675.000   7490.900   6817.100  10232.100   1545.000   2885.000
##  [13]  -6109.000  -6169.500 -10919.000 -12535.900   -200.000   3160.000
##  [19]  -1100.000   1470.000   4512.500  -8844.500 -10392.500  -4883.500
##  [25]  32970.000  19748.000  20104.250  21300.000  29950.500  17800.000
##  [31]   6308.000   8975.000   3110.000   5645.000   4780.000   5957.900
##  [37]   1828.000   3737.800    834.000  10169.000   1390.000  10445.000
##  [43]   4252.900   5867.800  -1196.000   8444.000   6697.800   2199.970
##  [49]  11478.000   2139.900   3129.790   3319.900    518.000   9909.000
##  [55]  10634.000  12840.000  16105.000   7911.002  12786.668  14092.500
##  [61]  19647.500   2565.000   8006.167   -842.100    408.000   5207.900
##  [67]   1478.000    717.990   7797.900   2307.900   1668.000   1427.900
##  [73]    778.000   7087.800  24185.000     -2.900   6810.000  16270.000
##  [79]  13605.000   9472.000  -9826.000  -4425.942  -7382.974  -2700.250
##  [85]  17639.750  13806.000  10736.000   2269.000  11445.980   -845.000
##  [91]  -6751.250   1365.000   4376.000   9495.000 -11445.800  -9525.800
##  [97]   4231.000  28235.000  -4691.000  -4567.250  -9005.200  -4323.200
## [103]  -2062.200  -3960.200  12454.000  23155.000   6325.000   3434.000
## [109]    224.000  11835.000  17345.000   1881.500  -6834.000   2912.000
## [115]   6801.000   5251.400   4335.000   6150.000   5933.000   5466.200
## [121]  15750.100   7577.000  15427.000   6535.000  10150.000   4680.000
## [127]   5669.000  15340.000  -4743.500  -4630.500   1171.000  28398.000
## [133]   9320.000  19829.000   4680.000   2370.000   2400.000   1188.000
## [139]   1538.000  12758.000   4240.800   5074.000   3185.000   5168.000
## [145]  -2456.000   -472.700  -3350.000  -2311.000    -11.000   2834.000
## [151]   9434.000   -840.000   2328.000   2048.000   2040.000   3010.000
## [157]   5129.900   2410.000   6854.000  13094.000   4445.000  11490.000
## [163]   6574.600   6770.200   4774.600   4539.600   4310.000   7470.000
## [169]  21602.400  18940.500  30620.500  17940.500  23220.500   2025.000
## [175]   1150.000   3110.000   3791.500  -3510.000  -1990.000  -2947.200
## [181]   5942.000  -1348.500  11200.000   6592.000   7259.500   4159.500
## [187]  10300.000  -3852.000  -7830.000  -6379.000  -1733.500  -6395.500
## [193]  -7982.500   1350.000   2620.000   1555.000   -730.000    155.000
## [199]   3000.000   2839.000   4614.000   3309.000   3952.500   3224.999
## [205]   2932.499   2632.499   4012.499   3653.499  11925.000   2242.498
## [211]   3479.999   8300.000   2463.166   2954.999   3742.499   2742.499
## [217]   3214.999   4894.999   4147.500   3167.499  21410.000  10294.666
## [223]  14001.664  17503.331   7554.998   3580.000   4960.000   3510.000
## [229]   5375.950  12090.000   8190.000  11025.000   5970.000   6445.000
## [235]   6445.000   6200.000  -5831.000  -2680.000  -3928.500   1399.000
## [241]   9870.000   4240.000   3812.499   4514.999   4267.500   3607.499
## [247]   2715.000   5050.000   4610.000  11810.000  18560.000   4510.000
## [253]   5270.000  12000.000   5250.000   6520.000   3685.000   1385.000
## [259]   8635.000   4410.000   2415.000   6680.000   4650.000   1610.000
## [265]   3600.000   3600.000   5810.000   3525.000   5790.000   5900.000
## [271]   6055.000  -3667.000   1155.000    585.000   1760.000   1450.000
## [277]   2863.000   2044.000   2264.000   2227.000   2842.000   2913.000
## [283]   2269.000   2332.499   -601.400   6234.000   -601.400   -601.850
## [289]   -601.400  14130.000   -701.750   -701.300   -601.600   -601.600
## [295]   -601.000   -601.000   -601.400   -601.000  14760.000  17082.000
## [301]   9250.000   6760.000  -2602.700  -2503.050   -302.000   4833.000
## [307]   5860.000   5180.000   3370.000   4080.000   4680.000   5618.000
## [313]   5112.000  17280.000  -4207.950  -4209.950   2140.000   7878.000
## [319]   3835.000   3260.000    135.000  -1255.000  12459.000   9204.000
## [325]   -155.000  -4741.000  -5690.000    714.000   7076.500  12427.500
## [331]   5810.000   5024.000   9931.000  16038.000  -1399.600  -1399.600
## [337]    225.000    710.000    330.000    710.000    990.000    470.000
## [343]    520.000    850.000    520.000   2040.000   2150.000   1400.000
## [349]   1400.000   2000.000   1800.000   2350.000   1550.000   2550.000
## [355]   2150.000   2000.000  -3360.000  -5580.000    804.000  -4330.000
## [361]  -3630.000  -5320.000  -3715.000   2189.000   6595.000   8185.500
## [367]   -910.000  20780.000  12445.500  17927.000   8970.800  13030.550
## [373]  15690.800   9590.800  10554.800   8020.800  12817.000   7930.000
## [379]  11327.000   9985.000   7585.000  -4980.000  -2925.000  -6109.000
## [385]  -6169.500 -10919.000  -8844.500 -10392.500  -4883.500  19971.000
## [391]  24942.750  -6146.250   3985.000    550.000   1580.000   3566.000
## [397]   5957.900   1828.000   4252.900   1780.000   2199.970   2139.900
## [403]   3129.790   4990.000   7643.000   3319.900   1478.000   2307.900
## [409]   6480.000  13763.000  16992.000  15700.000  10000.000   1881.500
## [415]  -6834.000   2328.000   3010.000  17655.000  -7968.160  -6379.000
## [421]  -1733.500  -6395.500  -7982.500  -1982.500   9270.000   7252.000
## [427]  -2602.700  -2503.050  -5648.000

Obtener más de una columna

renUti <- datos[,c(2, 3, 9, 8, 18)]
str(renUti)
## Classes 'tbl_df', 'tbl' and 'data.frame':    429 obs. of  5 variables:
##  $ ID.de.tipo.de.bitácora..clave.foránea.: num  73095 73096 73099 73101 73102 ...
##  $ Tipo.de.parcela..testigo.o.innovación.: chr  "Parcela testigo" "Parcela innovación" "Parcela Área de extensión" "Parcela Área de extensión" ...
##  $ tipoProduccion                        : chr  "Temporal" "Temporal" "Temporal" "Temporal" ...
##  $ Rendimiento..t.ha.                    : num  2 2.3 1.3 1.1 1.2 1.8 1.5 0 5.3 6.3 ...
##  $ utilidad                              : num  15804 22474 5225 1935 3745 ...
head(renUti,3)
##   ID.de.tipo.de.bitácora..clave.foránea.
## 1                                  73095
## 2                                  73096
## 3                                  73099
##   Tipo.de.parcela..testigo.o.innovación. tipoProduccion Rendimiento..t.ha.
## 1                        Parcela testigo       Temporal                2.0
## 2                     Parcela innovación       Temporal                2.3
## 3              Parcela Área de extensión       Temporal                1.3
##   utilidad
## 1    15804
## 2    22474
## 3     5225

Ver los valores únicos de una fila

unique(datos$Region)
## [1] "Mixteca"          "Sierra Norte"     "Valles Centrales"
## [4] "Costa"            "Papaloapan"       "Cañada"          
## [7] "Sierra Sur"       "Istmo"

Filtrar filas

Para realizar subconjuntos de las filas, se utilizan los siguientes operadores lógicos:

Filtrar filas

En el siguiente ejemplo se obtienen todos los registros que pertenecen a parcelas de riego.

Primero se pueden obtener los nombres de las variables, para conocer la ubicación del dato a filtrar

names(renUti)
## [1] "ID.de.tipo.de.bitácora..clave.foránea."
## [2] "Tipo.de.parcela..testigo.o.innovación."
## [3] "tipoProduccion"                        
## [4] "Rendimiento..t.ha."                    
## [5] "utilidad"

Después se puede llevar acabo el filtrado de las filas

renUtiRiego <- renUti[renUti$tipoProduccion == "Riego", ]
renUtiRiego 
##     ID.de.tipo.de.bitácora..clave.foránea.
## 18                                   73795
## 25                                   73841
## 26                                   73846
## 27                                   73847
## 28                                   73848
## 29                                   73849
## 30                                   73852
## 75                                   74456
## 77                                   74470
## 84                                   74551
## 85                                   74552
## 86                                   74554
## 87                                   74555
## 90                                   74563
## 91                                   74564
## 97                                   74585
## 98                                   74587
## 100                                  74610
## 150                                  79597
## 151                                  79598
## 169                                  81476
## 170                                  81477
## 171                                  81478
## 172                                  81481
## 173                                  81483
## 212                                  84549
## 221                                  84567
## 286                                  91821
## 425                                  91824
##     Tipo.de.parcela..testigo.o.innovación. tipoProduccion
## 18                      Parcela innovación          Riego
## 25                      Parcela innovación          Riego
## 26                         Parcela testigo          Riego
## 27                      Parcela innovación          Riego
## 28                         Parcela testigo          Riego
## 29                      Parcela innovación          Riego
## 30                         Parcela testigo          Riego
## 75               Parcela Área de extensión          Riego
## 77               Parcela Área de extensión          Riego
## 84                         Parcela testigo          Riego
## 85                      Parcela innovación          Riego
## 86                         Parcela testigo          Riego
## 87                      Parcela innovación          Riego
## 90                         Parcela testigo          Riego
## 91                      Parcela innovación          Riego
## 97               Parcela Área de extensión          Riego
## 98               Parcela Área de extensión          Riego
## 100              Parcela Área de extensión          Riego
## 150                        Parcela testigo          Riego
## 151                     Parcela innovación          Riego
## 169              Parcela Área de extensión          Riego
## 170              Parcela Área de extensión          Riego
## 171              Parcela Área de extensión          Riego
## 172              Parcela Área de extensión          Riego
## 173              Parcela Área de extensión          Riego
## 212              Parcela Área de extensión          Riego
## 221              Parcela Área de extensión          Riego
## 286              Parcela Área de extensión          Riego
## 425              Parcela Área de extensión          Riego
##     Rendimiento..t.ha. utilidad
## 18                2.90  3160.00
## 25                7.50 32970.00
## 26                4.90 19748.00
## 27                5.30 20104.25
## 28                5.50 21300.00
## 29                6.20 29950.50
## 30                5.00 17800.00
## 75                5.50 24185.00
## 77                3.20  6810.00
## 84                1.00 -2700.25
## 85                5.50 17639.75
## 86                4.40 13806.00
## 87                4.30 10736.00
## 90                1.30  -845.00
## 91                0.50 -6751.25
## 97                2.50  4231.00
## 98                7.70 28235.00
## 100               1.80 -4567.25
## 150               2.10  2834.00
## 151               3.39  9434.00
## 169               3.60 21602.40
## 170               3.40 18940.50
## 171               6.40 30620.50
## 172               4.20 17940.50
## 173               4.00 23220.50
## 212               5.30  8300.00
## 221               6.30 21410.00
## 286               3.20  6234.00
## 425               0.80  9270.00

Filtrado con más de una condición

renUtiRiego <- renUti[renUti$tipoProduccion == "Riego" & renUti$Tipo.de.parcela..testigo.o.innovación. == "Parcela innovación", ]
renUtiRiego 
##     ID.de.tipo.de.bitácora..clave.foránea.
## 18                                   73795
## 25                                   73841
## 27                                   73847
## 29                                   73849
## 85                                   74552
## 87                                   74555
## 91                                   74564
## 151                                  79598
##     Tipo.de.parcela..testigo.o.innovación. tipoProduccion
## 18                      Parcela innovación          Riego
## 25                      Parcela innovación          Riego
## 27                      Parcela innovación          Riego
## 29                      Parcela innovación          Riego
## 85                      Parcela innovación          Riego
## 87                      Parcela innovación          Riego
## 91                      Parcela innovación          Riego
## 151                     Parcela innovación          Riego
##     Rendimiento..t.ha. utilidad
## 18                2.90  3160.00
## 25                7.50 32970.00
## 27                5.30 20104.25
## 29                6.20 29950.50
## 85                5.50 17639.75
## 87                4.30 10736.00
## 91                0.50 -6751.25
## 151               3.39  9434.00

Practica

Ingresa al siguiente link para realizar la práctica: goo.gl/GaKhWD