Tidyr 0.2.0 (y reshape2 1.4.1)

publicado en: rstudio | 0

tidyr 0.2.0 está ahora disponible en CRAN. tidyr hace que sea fácil «ordenar» sus datos, almacenándolos de forma consistente para que sea fácil de manipular, visualizar y modelar. Los datos ordenados tienen variables en las columnas y observaciones en las filas, y se describen con más detalle en la viñeta de datos ordenados. Instalar tidyr con:

install.packages("tidyr")

Hay tres importantes adiciones al tidyr 0.2.0:

  • expand() es un envoltorio alrededor de expand.grid() que permite generar todas las combinaciones posibles de dos o más variables. En conjunto con dplyr::left_join(), esto hace que sea fácil rellenar las filas de datos que faltan.
sales <- dplyr::data_frame(
  año = rep(c(2012, 2013), c(4, 2)),
  cuarto = c(1, 2, 3, 4, 2, 3),
  ventas = muestra(6) * 100
)
# Faltan datos de ventas para 2013 Q1 & Q4
ventas
#Fuente: marco de datos local [6 x 3].
#...y que no se puede hacer nada..;
# ...; ventas del trimestre del año
#1 2012 1 400
#2 2012 2 200
#3 2012 3 500
#4 2012 4 600
#5 2013 2 300
#6 2013 3 100
# Los valores faltantes son ahora explícitos
ventas
  expandir(año, trimestre) % ...
  dplyr::left_join(ventas)
#; Se une por: c("año", "trimestre")
#Fuente: marco de datos local [8 x 3].
#...y que no se puede hacer nada..;
# ...; ventas del trimestre del año
#1 2012 1 400
#2 2012 2 200
#3 2012 3 500
#4 2012 4 600
#5 2013 1 NA
#6 2013 2 300
#7 2013 3 100
#8 2013 4 NA
  • En el proceso de ordenamiento de datos, a veces es útil tener una columna de un marco de datos que es una lista de vectores. unnest() permite simplificar esa columna hasta un vector atómico, duplicando las filas originales según sea necesario. (NB: Si trabajas con marcos de datos que contienen listas, te recomiendo encarecidamente que utilices el tbl_df de dplyr, que mostrará las columnas de la lista de forma que su estructura sea más clara. Utilice dplyr::data_frame() para crear un marco de datos envuelto con la clase tbl_df).
raw <- dplyr::data_frame(
  x = 1:3,
  y = c("a", "d,e,f", "g,h")
)
# y es un vector de caracteres que contiene cadenas separadas por comas
raw
#Fuente: marco de datos local [3 x 2].
#...y que no se puede hacer nada..;
# ...x y... #
#1 1 a
#2 2 d,e,f
#3 3 g, h
# y es una lista de vectores de carácter
as_list <- raw %>% mutate(y = strsplit(y, ","))
as_list
#Fuente: marco de datos local [3 x 2].
#...y que no se puede hacer nada..;
# ...x y... #
#...1 1... chr[1];
# ...2 2 <chr[3];
#3 3
# y es un vector de caracteres; las filas se duplican según sea necesario
as_list % % unnest(y)
#Fuente: marco de datos local [6 x 2].
#...y que no se puede hacer nada..;
# ...x y... #
#1 1 a
#2 2 d
#3 2 e
#4 2 f
#5 3 g
#6 3 h
  • separate() tiene un nuevo argumento extra que le permite controlar lo que sucede si una columna no siempre se divide en el mismo número de piezas.
raw %N;% separate(y, c("trt", "B"), ",")
##; Error. ### Los valores no se dividen en 2 partes en 1, 2
crudo % ... % separado (y, c("trt", "B"), ",", extra = "gota")
#Fuente: marco de datos local [3 x 3].
#...y que no se puede hacer nada..;
# ...x trt B
#1 1 a NA
#2 2 d e
#3 3 g h
crudo % ... % separado (y, c("trt", "B"), ",", extra = "fusionar")
#Fuente: marco de datos local [3 x 3].
#...y que no se puede hacer nada..;
# ...x trt B
#1 1 a NA
#2 2 d e,f
#3 3 g h

Para leer sobre los otros cambios menores y correcciones de errores, por favor consulte las notas de la versión.

reshape2 1.4.1

También hay una nueva versión de reshape2, 1.4.1. Incluye tres correcciones de errores para melt.data.frame() aportadas por Kevin Ushey. Lee todo sobre ellos en las notas de la versión e instálalo con:

install.packages("reshape2")

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *