2018-10-28

Eliminar el fondo de una imagen con Excel

Problema

Deseamos eliminar el fondo de una fotografía con PowerPoint.

Solución

  1. Copiamos la imagen en una hoja
  2. Clic sobre la imagen
  3. En Herramientas de imagen, clic sobre Quitar fondo.

Resultado

Notas

  • La edición de imágenes está disponible tanto en Excel como el resto de lo productos de Office, Word, PowerPoint, o Outlook entre otros.
  • Los resultados son más exactos cuanto más diferenciados están el objeto principal y el fondo, como en este ejemplo.
  • No obstante, en ocasiones necesitaremos editar el resultado tras eliminar el fondo. Haciendo uso de Marcar las áreas para mantener o Marcar áreas para quitar.

2018-10-14

Importar ficheros comprimidos en R con readr

Problema

Queremos importar ficheros comprimidos en R.

Solución

Empleamos el paquete readr que descomprime automáticamente los siguientes tipos de ficheros: gz, .bz2, .xz, o .zip. Podemos emplearlo con la read_delim o los casos especiales read_csv, read_csv2 o read_tsv. En nuestro ejemplo utilizamos el fichero title.ratings.tsv.gz.

library(readr)
df_ratings <- read_tsv('title.ratings.tsv.gz', na = "\\N", quote = '')
df_ratings %>% head()
También podemos indicar la dirección del fichero y automáticamente descargará y descomprimirá el mismo.

df_ratings <- read_tsv('https://datasets.imdbws.com/title.ratings.tsv.gz', na = "\\N", quote = '')
df_ratings %>% head()

Resultados

# A tibble: 6 x 3
  tconst    averageRating numVotes
                   
1 tt0000001           5.8     1423
2 tt0000002           6.4      168
3 tt0000003           6.6     1016
4 tt0000004           6.4      100
5 tt0000005           6.2     1713
6 tt0000006           5.5       88

Entradas relacionadas

Referencias

2018-10-06

Generar direcciones de correo aleatorias en R

Problema

Necesitamos crear un vector con direcciones de correo aleatorias.

Solución

Hay múltiples opciones, ofrezco dos con los paquetes generator y stringi.

  • generator
  • library(generator)
    # Ejemplo 1: 10 direcciones
    set.seed(1977)
    r_email_addresses(10)
    # Ejemplo 2: Añadir a data frame
    library(dplyr)
    set.seed(1977)
    mtcars %>% mutate(email = r_email_addresses(n())) %>% head(10)
    
  • stringi
  • Opción más verbosa, pues concatenamos dos cadenas de texto aleatorias separadas por una arroba. Ganamos en flexibilidad pues podemos escoger la longitud de las mismas.

    library(stringi)
    set.seed(1977)
    paste0(stringi::stri_rand_strings(10, 5),
           "@",
           stringi::stri_rand_strings(10, 5))
    set.seed(1977)
    mtcars %>% mutate(email = paste0(
      stringi::stri_rand_strings(n(), 5),
      "@",
      stringi::stri_rand_strings(n(), 5)
    )) %>% head(10)
    

    Resultados

    [1] "rdkvi@kfjaul.myo"      "qpm@bxvqkrtl.fhk"      "aedcq@a.ruc"          
     [4] "xi@l.wkp"              "bhk@obcjyzdi.tda"      "da@qksrfahvup.yel"    
     [7] "ahjq@lg.gmo"           "agcmyp@i.itc"          "rutfv@ponbi.jtm"      
    [10] "yeaxlbsko@ntlvkfe.fsg"
    
        mpg cyl  disp  hp drat    wt  qsec vs am gear carb                     email
    1  21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4          rdkvi@kfjaul.myo
    2  21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4          qpm@bxvqkrtl.fhk
    3  22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1               aedcq@a.ruc
    4  21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1                  xi@l.wkp
    5  18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2          bhk@obcjyzdi.tda
    6  18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1         da@qksrfahvup.yel
    7  14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4               ahjq@lg.gmo
    8  24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2              agcmyp@i.itc
    9  22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2           rutfv@ponbi.jtm
    10 19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4     yeaxlbsko@ntlvkfe.fsg
    

    Entradas relacionadas

    Nube de datos