hola, casi recien llegado a r, esta es mi primera participación en la lista, aunque me han servido bastante entradas anteriores. gracias a todos. tengo un problema al generar una determinada estructura de datos. A ver si alguien me puede ayudar. tengo un dataframe con información de visitas y productos de una web. En cada visita se pueden hacer varias transacciones comprando varios productos en la misma visita. La estructura sería aprox. la siguiente: idVisita idProducto 1 12 1 18 1 21 2 13 2 18 2 09 2 21 3 12 4 21 4 14 me gustaría poder ver cómo se relacionan los diferentes productos entre sí (típico cross-selling) visualizandolo mediante una red. Para ello, necesito una estructura que tenga el típico source y target para generar la arista. para los datos anteriores el resultado sería: Source Target 12 18 12 21 18 21 13 18 13 09 13 21 18 09 18 21 09 21 21 14 la idea sería ir creando todos los pares de valores posibles de la columna idProducto según los valores en la columna idVisita. Por ejemplo, la visita 3 no genera pares de valores, pero la visita 2 genera 6 (se podría eliminar de antemao los valores que no generen arista). a alguien se le ocurre cómo poder hacer esto con r? o de cualquier otra forma? cualquier ayuda o referencia será más que bienvenida :) gracias por adelantado. saludos, manu [[alternative HTML version deleted]]
Hola Manu, Si "x" es tu conjunto de datos, esta es una forma de obtener lo que necesitas: r <- with(x, tapply(idProducto, idVisita, function(x) if(length(x) >1) combn(x, 2))) do.call(rbind, sapply(r[!sapply(r, is.null)], t)) # [,1] [,2] #[1,] 12 18 #[2,] 12 21 #[3,] 18 21 #[4,] 13 18 #[5,] 13 09 #[6,] 13 21 #[7,] 18 09 #[8,] 18 21 #[9,] 09 21 [10,] 21 14 Saludos, Jorge.- 2013/7/10 Manu Rdrgz <manu.rdrgz@gmail.com>> hola, > > casi recien llegado a r, esta es mi primera participación en la lista, > aunque me han servido bastante entradas anteriores. gracias a todos. > > tengo un problema al generar una determinada estructura de datos. A ver si > alguien me puede ayudar. > > tengo un dataframe con información de visitas y productos de una web. En > cada visita se pueden hacer varias transacciones comprando varios productos > en la misma visita. La estructura sería aprox. la siguiente: > > idVisita idProducto > 1 12 > 1 18 > 1 21 > 2 13 > 2 18 > 2 09 > 2 21 > 3 12 > 4 21 > 4 14 > > me gustaría poder ver cómo se relacionan los diferentes productos entre sí > (típico cross-selling) visualizandolo mediante una red. Para ello, necesito > una estructura que tenga el típico source y target para generar la arista. > > para los datos anteriores el resultado sería: > > Source Target > 12 18 > 12 21 > 18 21 > 13 18 > 13 09 > 13 21 > 18 09 > 18 21 > 09 21 > 21 14 > > la idea sería ir creando todos los pares de valores posibles de la columna > idProducto según los valores en la columna idVisita. Por ejemplo, la visita > 3 no genera pares de valores, pero la visita 2 genera 6 (se podría eliminar > de antemao los valores que no generen arista). > > a alguien se le ocurre cómo poder hacer esto con r? o de cualquier otra > forma? > > cualquier ayuda o referencia será más que bienvenida :) > > gracias por adelantado. > > saludos, > > manu > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]]
Hola, ¿qué tal? Yo veo dos maneras de hacerlo. La más sencilla es con un "merge" de la tabla sobre sí misma por idVisita. Luego tienes que hacer un filtrado para eliminar las "relaciones reflexivas" (un producto relacionado consigo mismo) y alguna otra cosa. La alternativa es usar las técnicas descritas en http://kieranhealy.org//blog/archives/2013/06/09/using-metadata-to-find-paul-revere/ Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El día 10 de julio de 2013 14:38, Manu Rdrgz <manu.rdrgz en gmail.com> escribió:> hola, > > casi recien llegado a r, esta es mi primera participación en la lista, > aunque me han servido bastante entradas anteriores. gracias a todos. > > tengo un problema al generar una determinada estructura de datos. A ver si > alguien me puede ayudar. > > tengo un dataframe con información de visitas y productos de una web. En > cada visita se pueden hacer varias transacciones comprando varios productos > en la misma visita. La estructura sería aprox. la siguiente: > > idVisita idProducto > 1 12 > 1 18 > 1 21 > 2 13 > 2 18 > 2 09 > 2 21 > 3 12 > 4 21 > 4 14 > > me gustaría poder ver cómo se relacionan los diferentes productos entre sí > (típico cross-selling) visualizandolo mediante una red. Para ello, necesito > una estructura que tenga el típico source y target para generar la arista. > > para los datos anteriores el resultado sería: > > Source Target > 12 18 > 12 21 > 18 21 > 13 18 > 13 09 > 13 21 > 18 09 > 18 21 > 09 21 > 21 14 > > la idea sería ir creando todos los pares de valores posibles de la columna > idProducto según los valores en la columna idVisita. Por ejemplo, la visita > 3 no genera pares de valores, pero la visita 2 genera 6 (se podría eliminar > de antemao los valores que no generen arista). > > a alguien se le ocurre cómo poder hacer esto con r? o de cualquier otra > forma? > > cualquier ayuda o referencia será más que bienvenida :) > > gracias por adelantado. > > saludos, > > manu > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >
Hola, Miraría detalles en el paquete "arules" que está pensado justamente para este tipo de análisis (Basket y Transaction analysis). http://cran.r-project.org/web/packages/arules/vignettes/arules.pdf Saludos, Carlos Ortega www.qualityexcellences.es El 10 de julio de 2013 14:59, Carlos J. Gil Bellosta <cgb@datanalytics.com>escribió:> Hola, ¿qué tal? > > Yo veo dos maneras de hacerlo. La más sencilla es con un "merge" de la > tabla sobre sí misma por idVisita. Luego tienes que hacer un filtrado > para eliminar las "relaciones reflexivas" (un producto relacionado > consigo mismo) y alguna otra cosa. > > La alternativa es usar las técnicas descritas en > > > http://kieranhealy.org//blog/archives/2013/06/09/using-metadata-to-find-paul-revere/ > > Un saludo, > > Carlos J. Gil Bellosta > http://www.datanalytics.com > > > > El día 10 de julio de 2013 14:38, Manu Rdrgz <manu.rdrgz@gmail.com> > escribió: > > hola, > > > > casi recien llegado a r, esta es mi primera participación en la lista, > > aunque me han servido bastante entradas anteriores. gracias a todos. > > > > tengo un problema al generar una determinada estructura de datos. A ver > si > > alguien me puede ayudar. > > > > tengo un dataframe con información de visitas y productos de una web. En > > cada visita se pueden hacer varias transacciones comprando varios > productos > > en la misma visita. La estructura sería aprox. la siguiente: > > > > idVisita idProducto > > 1 12 > > 1 18 > > 1 21 > > 2 13 > > 2 18 > > 2 09 > > 2 21 > > 3 12 > > 4 21 > > 4 14 > > > > me gustaría poder ver cómo se relacionan los diferentes productos entre > sí > > (típico cross-selling) visualizandolo mediante una red. Para ello, > necesito > > una estructura que tenga el típico source y target para generar la > arista. > > > > para los datos anteriores el resultado sería: > > > > Source Target > > 12 18 > > 12 21 > > 18 21 > > 13 18 > > 13 09 > > 13 21 > > 18 09 > > 18 21 > > 09 21 > > 21 14 > > > > la idea sería ir creando todos los pares de valores posibles de la > columna > > idProducto según los valores en la columna idVisita. Por ejemplo, la > visita > > 3 no genera pares de valores, pero la visita 2 genera 6 (se podría > eliminar > > de antemao los valores que no generen arista). > > > > a alguien se le ocurre cómo poder hacer esto con r? o de cualquier otra > > forma? > > > > cualquier ayuda o referencia será más que bienvenida :) > > > > gracias por adelantado. > > > > saludos, > > > > manu > > > > [[alternative HTML version deleted]] > > > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es@r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]