2017-07-31

Listar ficheros de un directorio con una determinada extensión en R



Problema

Queremos extraer los nombres de los ficheros con una determinada extensión dentro de un directorio.

Solución

# Especificamos el directorio, si fuera distinto del actual
setwd("C:/Users/nubededatos/Carpeta")
# Listamos los ficheros 
ficheros <- list.files(pattern = "\\.csv")

Resultado

[1] "0008a68c5e0f9446845c4ad77ab6fc6cc2f623a1f7a39e112d51b9d49177059a.csv"
[2] "000e287cf122b1203172b328fb97ebf1976485611a11dcaeb21b0214a90ef314.csv"
[3] "001a3d3bc0679a88f599b167feb8e1a84a26c14c73bac1ced319b5857227a161.csv"
[4] "001d6b50df57ffd739d7d32ccf26e00d3792729071298743092f3257e8b7cfb1.csv"
[5] "0020626e0631fabff9e0e7983285f021e3068d0de6bede9b25005c5da97bcc58.csv"
[6] "00208a90926c7b54c13abacaba725709a090d907cf3e0f8e5f771fcdda3d526f.csv"

Si necesitamos eliminar la extensión, por ejemplo, para comparar posteriormente los nombres con un vector:

ficheros <- strtrim(files, nchar(files)-4) 

Entradas relacionadas

Referencias

2017-07-29

Anotar diagrama de caja en ggplot2

Problema

Deseamos anotar el siguiente diagrama de caja en ggplot2 y añadir los 5 números de Tukey: mínimo, bigote inferior, mediana, bigote superior, máximo.

fivenum(iris$Sepal.Width)
[1] 2.0 2.8 3.0 3.3 4.4
library(ggplot2)
ggplot(iris, aes(factor(0), Sepal.Width)) + 
geom_boxplot() + xlab("") + scale_x_discrete(breaks = NULL)

Solución

Creamos el data frame five con los 5 números de Tukey que utilizamos en los argumentos de geom_text para anotar el gráfico.

five <- data.frame(x = rep(1, 5), five = fivenum(iris$Sepal.Width))
ggplot(iris, aes(x = 0, y = Sepal.Width)) + 
  geom_boxplot() + xlab("") + scale_x_discrete(breaks = NULL) + 
  geom_text(data = five, aes(x = 0, y = five, label = five), nudge_x = 0.5)

Referencias

Entradas relacionadas

2017-07-27

Eliminar todos los hipervínculos de una hoja o libro con VBA

Problema

Necesitamos eliminar todos los hipervínculos de una hoja o de un libro de Excel.

Solución

  1. Abrimos el Editor de Microsoft Visual Basic: Alt+F11.
  2. Copiamos la subrutina correspondiente, para una hoja o para todo el libro, en un módulo.
    • 'Hoja activa
      Sub EliminarHipervínculosHoja()
       ActiveSheet.Hyperlinks.Delete
      End Sub
      
      'Todo el libro
      Sub EliminarHipervínculosLibro()
          Dim ws As Worksheet
          For Each ws In ThisWorkbook.Worksheets
              ws.Hyperlinks.Delete
          Next ws
      End Sub
      
  3. Ejecutamos la subrutina: F5. No se puede deshacer la acción.
  4. Los hipervínculos se habrán eliminado,

Entradas relacionadas

2017-07-21

Seleccionar un subconjunto de una base de datos sqlite con dplyr



Problema

Queremos extraer un subconjunto de filas de una base de datos sqlite con dplyr.

library(dplyr)
library(nycflights13)
flights_sqlite <- tbl(nycflights13_sqlite(), "flights")
flights_sqlite
Source:   query [?? x 19]
Database: sqlite 3.11.1 [C:\Users\Benjamin\AppData\Local\Temp\Rtmpsz2LSi/nycflights13.sqlite]

# A tibble: ?? x 19
    year month   day dep_time sched_dep_time dep_delay arr_time
                            
 1  2013     1     1      517            515         2      830
 2  2013     1     1      533            529         4      850
 3  2013     1     1      542            540         2      923
 4  2013     1     1      544            545        -1     1004
 5  2013     1     1      554            600        -6      812
 6  2013     1     1      554            558        -4      740
 7  2013     1     1      555            600        -5      913
 8  2013     1     1      557            600        -3      709
 9  2013     1     1      557            600        -3      838
10  2013     1     1      558            600        -2      753
# ... with more rows, and 12 more variables: sched_arr_time ,
#   arr_delay , carrier , flight , tailnum ,
#   origin , dest , air_time , distance , hour ,
#   minute , time_hour 

Al se un objeto de clase tbl_sqlite, la función slice genera un error.

slice(flights_sqlite, 10)
Error in UseMethod("slice_") : 
  no applicable method for 'slice_' applied to an object of class "c('tbl_sqlite', 'tbl_sql', 'tbl_lazy', 'tbl')

Solución

  • Primeras n filas
  • head(flights_sqlite, 10) %>% collect() 
    
    # A tibble: 10 x 19
        year month   day dep_time sched_dep_time dep_delay arr_time
                                
     1  2013     1     1      517            515         2      830
     2  2013     1     1      533            529         4      850
     3  2013     1     1      542            540         2      923
     4  2013     1     1      544            545        -1     1004
     5  2013     1     1      554            600        -6      812
     6  2013     1     1      554            558        -4      740
     7  2013     1     1      555            600        -5      913
     8  2013     1     1      557            600        -3      709
     9  2013     1     1      557            600        -3      838
    10  2013     1     1      558            600        -2      753
    # ... with 12 more variables: sched_arr_time , arr_delay ,
    #   carrier , flight , tailnum , origin , dest ,
    #   air_time , distance , hour , minute ,
    #   time_hour 
    

Entradas relacionadas

Referencias

2017-07-19

Formatear porcentajes negativos en rojo en Excel


Problema

Queremos formatear los porcentajes negativos en rojo para facilitar la legibilidad de nuestra hoja.

Solución

  1. Seleccionamos las celdas que queremos formatear
  2. Abrimos el cuadro Formato de celdas: Ctrl +1, botón derecho y clic en Formato de celdas
  3. Seleccionamos en Categoría: Personalizada
  4. Copiamos el siguiente texto
  5. #.##0,00%;[Rojo]-#.##0,00%
    

Entradas relacionadas

2017-07-16

Anclar y desanclar lista de campos de una tabla dinámica en Excel


Problema

Queremos aprender cómo anclar o desanclar la lista de campos de una tabla dinámica.

Solución

  • Desanclar campos
  • Situamos el cursor sobre Campos de la tabla dinámica, cuando apareza un aspa arrastramos hacia la parte de la hoja en la que deseamos situarlos.

    • Resultado
  • Anclar campos
  • Volvemos a situar el cursor sobre Campos de la tabla dinámica, cuando apareza un aspa hacemos doble clic y los campos se anclarán en la posición original.

    • Resultado
Nube de datos