2015-07-29

Activar las herramientas para el análisis de datos en Excel

Title Herramientas de análisis de datos es un complemento de Excel para el análisis de datos financieros, científicos o estadísticos.

Instalación

  1. Clic en la pestaña Archivo o en el botón de Microsoft Office dependiendo de la versión de Excel y clic en Opciones.
  2. Clic en Complementos, en el cuadro Administrar, seleccionamos Complementos de Excel y clic en Ir.
  3. Activamos la casilla de verificación Herramientas para análisis y, clic en Aceptar.
  4. En la ficha Datos, dentro del grupo Análisis podemos hacer clic en Análisis de datos.
  5. En el cuadro de diálogo Análisis de datos, clic en la herramienta deseada y clic en Aceptar.

Entradas relacionadas

2015-07-27

Dividir aleatoriamente los datos en dos partes con R

Title

Problema

Deseamos dividir aleatoriamente nuestros datos en dos partes. Será por ejemplo necesario para evaluar modelos estadísticos o de machine learning, y necesitemos construir dos conjuntos de datos, uno de entrenamiento o prueba del modelo (training) y otro de prueba independiente del mismo (test),

Solución

Utilizamos el siguiente código con el data frame mtcars.

set.seed(1234)
ind <- sample(2, nrow(mtcars), replace = TRUE, prob = c(0.7, 0.3))
data1 <- mtcars[ind == 1, ]
data2 <- mtcars[ind == 2, ] 
Generamos un índice de unos y doses para el número de filas de nuestro conjunto de datos —nrow— con las probabilidades deseadas, en nuestro ejemplo un 70% y un 30%. Con ese índice creamos los dos subconjuntos: data1 y data2.

# Primera parte
data1
                   mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Mazda RX4          21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag      21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
Datsun 710         22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive     21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
Valiant            18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
Duster 360         14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
Merc 240D          24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
Merc 230           22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
Merc 280           19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
Merc 280C          17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
Merc 450SE         16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
Merc 450SL         17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
Cadillac Fleetwood 10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
Chrysler Imperial  14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
Fiat 128           32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
Honda Civic        30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
Toyota Corolla     33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
Toyota Corona      21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
Dodge Challenger   15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
AMC Javelin        15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
Camaro Z28         13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
Pontiac Firebird   19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
Porsche 914-2      26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
Ferrari Dino       19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
Maserati Bora      15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
Volvo 142E         21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2
# Segunda parte
data2
                     mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
Fiat X1-9           27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4

Entradas relacionadas

Referencias

2015-07-23

Gráficos de barras en R con el mismo ancho de barra

Title

Problema

Tenemos tres gráficos con distintos números de barras y queremos que el ancho de la barra sea el mismo en las tres.

par(mfrow=c(1,3));
par(mar=c(9,6,4,2)+0.1);
barcenter1<- barplot(c(1,2,3,4,5));
mtext("Average Emergent", side=2, line=4);
par(mar=c(9,2,4,2)+0.1);
barcenter2<- barplot(c(1,2,3));
par(mar=c(9,2,4,2)+0.1);
barcenter3<- barplot(c(1,2,3,4,5,6,7));

Solución

  • Primer intento
  • Corregimos parcialmente el problema con los argumentos xlim = c(0, 1), width = 0.1. Sin embargo se puede apreciar que el ancho no es exactamente el mismo.

    width - optional vector of bar widths. Re-cycled to length the number of bars drawn. Specifying a single value will have no visible effect unless xlim is specified.

    par(mfrow = c(1, 3))
    par(mar = c(9, 6, 4, 2) + 0.1)
    barcenter1 <- barplot(c(1, 2, 3, 4, 5), xlim = c(0, 1), width = 0.1)
    mtext("Average Emergent", side = 2, line = 4)
    par(mar = c(9, 2, 4, 2) + 0.1)
    barcenter2 <- barplot(c(1, 2, 3), xlim = c(0, 1), width = 0.1)
    par(mar = c(9, 2, 4, 2) + 0.1)
    barcenter1 <- barplot(c(1, 2, 3, 4, 5, 6, 7), xlim = c(0, 1), width = 0.1)
    
  • Segundo intento
  • Introducimos ceros para que respete el espacio.

    par(mfrow = c(1, 1)) # Reiniciamos los parámetros gráficos
    df <- data.frame(barcenter1 = c(1, 2, 3, 4, 5, 0, 0), 
                     barcenter2 = c(1, 2, 3, 0, 0, 0, 0), 
                     barcenter3 = c(1, 2, 3, 4, 5, 6, 7))
    barplot(as.matrix(df), beside = TRUE)
    
    Con ggplot2:

    df <- data.frame(x = c(1, 2, 3, 4, 5, 1, 2, 3, 1, 2, 3, 4, 5, 6, 7), 
                     y = c(rep("bar1", 5), rep("bar2", 3), rep("bar3", 7)))                                                                                         
    library(ggplot2)
    ggplot(data = df, aes(x = x, y = x)) + 
      geom_bar(stat = "identity") + 
      facet_grid(~y) 
    
  • Alternativa
  • Si en lugar de tres gráficos propiamente dichos queremos mostrarlos sin que haya separación por las barras en blanco entre ellas, creamos un gráfico único con espacio con dos separaciones por NAs.

    x <- c(1, 2, 3, 4, 5, NA, 1, 2, 3, NA, 1, 2, 3, 4, 5, 6, 7)
    barplot(x)
    

    Referencias

    2015-07-21

    Subconjunto de estadísticas descriptivas en R

    Title

    Problema

    Deseamos calcular las estadísticas descriptivas para unas variables de un data frame. Esta vez, queremos seleccionar tanto las estadísticas como las variables de la tabla.

    Solución

    Utilizaremos el data frame iris, pero solamente para las columnas Sepal.Length y Sepal.Width. En nuestro ejemplo, calcularemos la media (mean), la desviación típica (SD), la asimetría (skewness) y la curtosis (kurtosis). Pero

  • Para una tabla
  • library("psych")
    # Seleccionamos las columnas deseadas de la tabla
    d <- describe(iris[1:2])
    # Seleccionamos las estadísticas deseadas
    d[, c(3, 4, 11, 12)]
    
                 mean   sd skew kurtosis
    Sepal.Length 5.84 0.83 0.31    -0.61
    Sepal.Width  3.06 0.44 0.31     0.14
    
  • Estadísticas por grupo
  • # Variables por índice
    d <- describeBy(iris[1:2], group = iris$Species)
    # Dos opciones para seleccionar las estadísticas
    # de la lista de data frames
    lapply(d, "[", , c(3, 4, 11, 12))
    lapply(d, subset, , c(3, 4, 11, 12)) 
    
    # Variables por nombre
    i <- match(c("Sepal.Length", "Petal.Length"), names(iris))
    d <- describeBy(iris[i], group = iris$Species)
    lapply(d, subset, , c("mean", "sd", "skew", "kurtosis")) 
    
    $setosa
                 mean   sd skew kurtosis
    Sepal.Length 5.01 0.35 0.11    -0.45
    Sepal.Width  3.43 0.38 0.04     0.60
    
    $versicolor
                 mean   sd  skew kurtosis
    Sepal.Length 5.94 0.52  0.10    -0.69
    Sepal.Width  2.77 0.31 -0.34    -0.55
    
    $virginica
                 mean   sd skew kurtosis
    Sepal.Length 6.59 0.64 0.11    -0.20
    Sepal.Width  2.97 0.32 0.34     0.38
    

    Referencias

    2015-07-18

    Generar todas las combinaciones posibles —producto cartesiano— en R

    Title

    Problema

    Queremos obtener el producto cartesiano, todas las combinaciones posibles de varios vectores.

    Solución

    Además de los siguientes ejemplos puedes ver más en entradas relacionadas.

    Dos vectores

    • expand.grid
    • expand.grid(1:5, 1:5)
      
    • merge
    • merge(1:5, 1:5)
      
    • Cross join con sqldf
    • library(sqldf)
      df1 <- data.frame(a = 1:5)
      df2 <- df1
      sqldf("SELECT df1.a, df2.a FROM df1 
            CROSS JOIN df2")
      
    • Resultado
    •    x y
      1  1 1
      2  2 1
      3  3 1
      4  4 1
      5  5 1
      6  1 2
      7  2 2
      8  3 2
      9  4 2
      10 5 2
      11 1 3
      12 2 3
      13 3 3
      14 4 3
      15 5 3
      16 1 4
      17 2 4
      18 3 4
      19 4 4
      20 5 4
      21 1 5
      22 2 5
      23 3 5
      24 4 5
      25 5 5
      
    Más de dos vectores

    • expand.grid.
    • a <- c('europe', 'asia')
      b <- c('co2', 'temperature')
      c <- c('min', 'max')
      expand.grid(a, b, c)
      
          Var1        Var2 Var3
      1 europe         co2  min
      2   asia         co2  min
      3 europe temperature  min
      4   asia temperature  min
      5 europe         co2  max
      6   asia         co2  max
      7 europe temperature  max
      8   asia temperature  max
      

    Entradas relacionadas

    Referencias

    2015-07-16

    Borrar minigráficos de una hoja de Excel

    Problema

    Queremos borrar todos los minigráficos de una hoja de Excel.

    Solución

  • Manualmente
    • Opción 1: Clic sobre uno de los minigráficos, clic en Herramientas para minigráficos y clic en borrar. En el desplegable elegimos la opción deseada.
    • Opción 2: Clic sobre uno de los minigráficos, clic en Minigráficos y elegimos la opción de borrar deseada.
  • VBA
  • Podemos borrar todos los minigráficos de una hoja ejecutando el siguiente código. La acción es irreversible.

    Sub Borrar_Minigráficos()
    
        ActiveSheet.Select
        Selection.SparklineGroups.ClearGroups
    
    End Sub
    
    

    Entradas relacionadas

    2015-07-14

    Crear una consulta de UNION y de UNION ALL en Ms Access

    Title

    Problema

    Queremos crear una consulta de unión en Ms Access. Una consulta de unión combinará los resultados de varias consultas de selección. Si es de UNION combinará aquellos resultados únicos y si es UNION ALL combinará todos los resultados.

    Partimos de las siguientes dos tablas cuyos dos primeros registros están duplicados en ambas tablas.

    Solución

    Creamos una consulta y después clic en SQL Vista SQL. O bien abrimos una consulta antigua y la guardamos posteriormente con otro nombre.(Ver notas)

    • UNION
    • SELECT Tabla1.*
      FROM Tabla1;
      UNION 
      SELECT Tabla2.*
      FROM Tabla2;
      
      Como se puede observar, la consultade UNION, tan solo incluye aquellos registros únicos, excluyendo los duplicados.
    • UNION ALL
    • SELECT Tabla1.*
      FROM Tabla1;
      UNION ALL
      SELECT Tabla2.*
      FROM Tabla2;
      
      Como se puede observar, la consultade UNION, incluye todos los registros incluidos los duplicados.

    La consultas de unión, una vez guardadas, aparecerán con el símbolo de dos aros anidados en el panel de navegación.

    Notas

    Una consulta de unión es específica de SQL. Las consultas específicas de SQL no se pueden mostrar en la vista Diseño y, por lo tanto, deben escribirse directamente en SQL. En Microsoft Office Access 2007, se utiliza la ficha de objeto Vista SQL para escribir consultas específicas de SQL, incluidas consultas de unión.

    Referencias

    Nube de datos