Saltar al contenido

producto cartesiano con dplyr R

Contamos con tu apoyo para extender nuestros tutoriales sobre las ciencias informáticas.

Solución:

Utilice el cruce desde el tidyr paquete:

x <- data.frame(x=c("a","b","c"))
y <- data.frame(y=c(1,2,3))

crossing(x, y)

Resultado:

   x y
 1 a 1
 2 a 2
 3 a 3
 4 b 1
 5 b 2
 6 b 3
 7 c 1
 8 c 2
 9 c 3

Disculpas a todos: el siguiente ejemplo no no parecen funcionar con data.frames o data.tables.

Cuando x e y son base de datos tbls (tbl_dbi / tbl_sql) ahora también puedes hacer:

full_join(x, y, by = character())

Agregado a dplyr a fines de 2017, y también se traduce a un CROSS JOIN en el mundo de DB. Se ahorra la molestia de tener que introducir las variables falsas.

Si necesitamos un tidyverse salida, podemos usar expand desde tidyr

library(tidyverse)
y %>% 
   expand(y, x= x$x) %>%
   select(x,y)
# A tibble: 9 × 2
#       x     y
#   
#1      a     1
#2      b     1
#3      c     1
#4      a     2
#5      b     2
#6      c     2
#7      a     3
#8      b     3
#9      c     3

valoraciones y comentarios

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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