Buenas noches grupo. Saludos cordiales. He seguido en la búsqueda de una forma que me permita realizar la comparación de dos documentos pertenecientes a los años 2005 y 2013, y que pueda representar finalmente con wordcloud y con una table en la que las columnas sean los años de cada informe "2005" y "2013", y las filas sean las palabras con la frecuencia de cada una de ellas por cada informe: ---------------------------------- | | 2005 | 2013 | ---------------------------------- | terminos | | | ---------------------------------- | terminos | | | ---------------------------------- De manera que buscando y experimentando, adaptando de otras experiencias logré llegar a lo siguiente: ##########>informes<-c("2013", "2005") >pathname<-"C:/Users/d_2/Documents/Comision/PLAN de INSPECCIONES/Informes/">TDM<-function(informes, pathname) {info.dir<-sprintf("%s/%s", pathname, informes) info.cor<-Corpus(DirSource(directory=info.dir, encoding="UTF-8")) info.cor.cl<-tm_map(info.cor, content_transformer(tolower)) info.cor.cl<-tm_map(info.cor.cl, stripWhitespace) info.cor.cl<-tm_map(info.cor.cl,removePunctuation) sw<-readLines("C:/Users/d_2/Documents/StopWords.txt", encoding="UTF-8") sw<-iconv(enc2utf8(sw), sub = "byte") info.cor.cl<-tm_map(info.cor.cl, removeWords, stopwords("spanish")) info.tdm<-TermDocumentMatrix(info.cor.cl) result<-list(name = informes, tdm= info.tdm) }>tdm<-lapply(informes, TDM, path = pathname)Resultado:> tdm[[1]] [[1]]$name [1] "2013" [[1]]$tdm <<TermDocumentMatrix (terms: 1540, documents: 1)>> Non-/sparse entries: 1540/0 Sparsity : 0% Maximal term length: 18 Weighting : term frequency (tf) [[2]] [[2]]$name [1] "2005" [[2]]$tdm <<TermDocumentMatrix (terms: 1849, documents: 1)>> Non-/sparse entries: 1849/0 Sparsity : 0% Maximal term length: 19 Weighting : term frequency (tf)> str(tdm)List of 2 $ :List of 2 ..$ name: "2013" ..$ tdm :List of 6 .. ..$ i : int [1:1540] 1 2 3 4 5 6 7 8 9 10 ... .. ..$ j : int [1:1540] 1 1 1 1 1 1 1 1 1 1 ... .. ..$ v : num [1:1540] 1 5 8 1 1 1 1 3 1 1 ... .. ..$ nrow : int 1540 .. ..$ ncol : int 1 .. ..$ dimnames:List of 2 .. .. ..$ Terms: [1:1540] "070812" "100" "100000" "117735" ... .. .. ..$ Docs : "2013_21SeguridadCiudadana.txt" .. ..- attr(*, "class")= [1:2] "TermDocumentMatrix" "simple_triplet_matrix" .. ..- attr(*, "weighting")= [1:2] "term frequency" "tf" $ :List of 2 ..$ name: "2005" ..$ tdm :List of 6 .. ..$ i : int [1:1849] 1 2 3 4 5 6 7 8 9 10 ... .. ..$ j : int [1:1849] 1 1 1 1 1 1 1 1 1 1 ... .. ..$ v : num [1:1849] 1 1 1 1 1 1 1 1 1 1 ... .. ..$ nrow : int 1849 .. ..$ ncol : int 1 .. ..$ dimnames:List of 2 .. .. ..$ Terms: [1:1849] "071004" "100000" "101005" "1022" ... .. .. ..$ Docs : "05_seguridad_ciudadana.txt" .. ..- attr(*, "class")= [1:2] "TermDocumentMatrix" "simple_triplet_matrix" .. ..- attr(*, "weighting")= [1:2] "term frequency" "tf"> >m<-as.matrix(tdm)######## Al probar str(tdm), se obtiene lo siguiente: List of 2 $ :List of 2 ..$ name: chr "2013" ..$ tdm :List of 6 .. ..$ i : int [1:1540] 1 2 3 4 5 6 7 8 9 10 ... .. ..$ j : int [1:1540] 1 1 1 1 1 1 1 1 1 1 ... .. ..$ v : num [1:1540] 1 5 8 1 1 1 1 3 1 1 ... .. ..$ nrow : int 1540 .. ..$ ncol : int 1 .. ..$ dimnames:List of 2 .. .. ..$ Terms: chr [1:1540] "070812" "100" "100000" "117735" ... .. .. ..$ Docs : chr "2013_21SeguridadCiudadana.txt" .. ..- attr(*, "class")= chr [1:2] "TermDocumentMatrix" "simple_triplet_matrix" .. ..- attr(*, "weighting")= chr [1:2] "term frequency" "tf" $ :List of 2 ..$ name: chr "2005" ..$ tdm :List of 6 .. ..$ i : int [1:1849] 1 2 3 4 5 6 7 8 9 10 ... .. ..$ j : int [1:1849] 1 1 1 1 1 1 1 1 1 1 ... .. ..$ v : num [1:1849] 1 1 1 1 1 1 1 1 1 1 ... .. ..$ nrow : int 1849 .. ..$ ncol : int 1 .. ..$ dimnames:List of 2 .. .. ..$ Terms: chr [1:1849] "071004" "100000" "101005" "1022" ... .. .. ..$ Docs : chr "05_seguridad_ciudadana.txt" .. ..- attr(*, "class")= chr [1:2] "TermDocumentMatrix" "simple_triplet_matrix" .. ..- attr(*, "weighting")= chr [1:2] "term frequency" "tf" - attr(*, "dim")= int [1:2] 2 1> m<-as.matrix(tdm)> m[,1] [1,] List,2 [2,] List,2 ####### Pero no logro poder avanzar en los pasos para tener la comparativa de palabras por años par avanzar en una visualización de wordcloud. Si alguien se le ocurre alguna idea, agradecería mucho la ayuda.
Hola, Una forma de hacerlo es como aparece en el ejemplo de la ayuda de "wordcloud()": #------------------------------------------> ## Not run: > data(crude)> crude <- tm_map(crude, removePunctuation)> crude <- tm_map(crude, function(x)removeWords(x,stopwords()))> ##### from frequency counts #####> tdm <- TermDocumentMatrix(crude)> m <- as.matrix(tdm)> v <- sort(rowSums(m),decreasing=TRUE)> d <- data.frame(word = names(v),freq=v)> head(d) word freqoil oil 85 said said 73 prices prices 48 opec opec 42 mln mln 31 the the 26 #------------------------------------------ En tu caso tendrías dos data.frames como "d" del ejemplo anterior, uno por año. Luego, si quieres, los puedes juntar para mostrales juntos... Además de esto, puedes ver este otro ejemplo por si quisieras visualizarles al tiempo que compararles: http://simplystatistics.tumblr.com/post/16448577464/a-wordcloud-comparison-of-the-2011-and-2012-sotu Saludos, Carlos Ortega www.qualityexcellence.es El 25 de julio de 2014, 6:46, Alfredo David Alvarado Ríos < david.alvarado.r@gmail.com> escribió:> Buenas noches grupo. Saludos cordiales. > > He seguido en la búsqueda de una forma que me permita realizar la > comparación de dos documentos pertenecientes a los años 2005 y 2013, y > que pueda representar finalmente con wordcloud y con una table en la > que las columnas sean los años de cada informe "2005" y "2013", y las > filas sean las palabras con la frecuencia de cada una de ellas por > cada informe: > > > ---------------------------------- > | | 2005 | 2013 | > ---------------------------------- > | terminos | | | > ---------------------------------- > | terminos | | | > ---------------------------------- > > > De manera que buscando y experimentando, adaptando de otras > experiencias logré llegar a lo siguiente: > > ########## > > >informes<-c("2013", "2005") > >pathname<-"C:/Users/d_2/Documents/Comision/PLAN de INSPECCIONES/Informes/" > > >TDM<-function(informes, pathname) { > info.dir<-sprintf("%s/%s", pathname, informes) > info.cor<-Corpus(DirSource(directory=info.dir, encoding="UTF-8")) > info.cor.cl<-tm_map(info.cor, content_transformer(tolower)) > info.cor.cl<-tm_map(info.cor.cl, stripWhitespace) > info.cor.cl<-tm_map(info.cor.cl,removePunctuation) > sw<-readLines("C:/Users/d_2/Documents/StopWords.txt", encoding="UTF-8") > sw<-iconv(enc2utf8(sw), sub = "byte") > info.cor.cl<-tm_map(info.cor.cl, removeWords, stopwords("spanish")) > info.tdm<-TermDocumentMatrix(info.cor.cl) > result<-list(name = informes, tdm= info.tdm) > } > >tdm<-lapply(informes, TDM, path = pathname) > > Resultado: > > > tdm > [[1]] > [[1]]$name > [1] "2013" > [[1]]$tdm > <<TermDocumentMatrix (terms: 1540, documents: 1)>> > Non-/sparse entries: 1540/0 > Sparsity : 0% > Maximal term length: 18 > Weighting : term frequency (tf) > > [[2]] > [[2]]$name > [1] "2005" > [[2]]$tdm > <<TermDocumentMatrix (terms: 1849, documents: 1)>> > Non-/sparse entries: 1849/0 > Sparsity : 0% > Maximal term length: 19 > Weighting : term frequency (tf) > > > str(tdm) > List of 2 > $ :List of 2 > ..$ name: "2013" > ..$ tdm :List of 6 > .. ..$ i : int [1:1540] 1 2 3 4 5 6 7 8 9 10 ... > .. ..$ j : int [1:1540] 1 1 1 1 1 1 1 1 1 1 ... > .. ..$ v : num [1:1540] 1 5 8 1 1 1 1 3 1 1 ... > .. ..$ nrow : int 1540 > .. ..$ ncol : int 1 > .. ..$ dimnames:List of 2 > .. .. ..$ Terms: [1:1540] "070812" "100" "100000" "117735" ... > .. .. ..$ Docs : "2013_21SeguridadCiudadana.txt" > .. ..- attr(*, "class")= [1:2] "TermDocumentMatrix" > "simple_triplet_matrix" > .. ..- attr(*, "weighting")= [1:2] "term frequency" "tf" > $ :List of 2 > ..$ name: "2005" > ..$ tdm :List of 6 > .. ..$ i : int [1:1849] 1 2 3 4 5 6 7 8 9 10 ... > .. ..$ j : int [1:1849] 1 1 1 1 1 1 1 1 1 1 ... > .. ..$ v : num [1:1849] 1 1 1 1 1 1 1 1 1 1 ... > .. ..$ nrow : int 1849 > .. ..$ ncol : int 1 > .. ..$ dimnames:List of 2 > .. .. ..$ Terms: [1:1849] "071004" "100000" "101005" "1022" ... > .. .. ..$ Docs : "05_seguridad_ciudadana.txt" > .. ..- attr(*, "class")= [1:2] "TermDocumentMatrix" > "simple_triplet_matrix" > .. ..- attr(*, "weighting")= [1:2] "term frequency" "tf" > > > >m<-as.matrix(tdm) > > ######## > > Al probar str(tdm), se obtiene lo siguiente: > > List of 2 > $ :List of 2 > ..$ name: chr "2013" > ..$ tdm :List of 6 > .. ..$ i : int [1:1540] 1 2 3 4 5 6 7 8 9 10 ... > .. ..$ j : int [1:1540] 1 1 1 1 1 1 1 1 1 1 ... > .. ..$ v : num [1:1540] 1 5 8 1 1 1 1 3 1 1 ... > .. ..$ nrow : int 1540 > .. ..$ ncol : int 1 > .. ..$ dimnames:List of 2 > .. .. ..$ Terms: chr [1:1540] "070812" "100" "100000" "117735" ... > .. .. ..$ Docs : chr "2013_21SeguridadCiudadana.txt" > .. ..- attr(*, "class")= chr [1:2] "TermDocumentMatrix" > "simple_triplet_matrix" > .. ..- attr(*, "weighting")= chr [1:2] "term frequency" "tf" > $ :List of 2 > ..$ name: chr "2005" > ..$ tdm :List of 6 > .. ..$ i : int [1:1849] 1 2 3 4 5 6 7 8 9 10 ... > .. ..$ j : int [1:1849] 1 1 1 1 1 1 1 1 1 1 ... > .. ..$ v : num [1:1849] 1 1 1 1 1 1 1 1 1 1 ... > .. ..$ nrow : int 1849 > .. ..$ ncol : int 1 > .. ..$ dimnames:List of 2 > .. .. ..$ Terms: chr [1:1849] "071004" "100000" "101005" "1022" ... > .. .. ..$ Docs : chr "05_seguridad_ciudadana.txt" > .. ..- attr(*, "class")= chr [1:2] "TermDocumentMatrix" > "simple_triplet_matrix" > .. ..- attr(*, "weighting")= chr [1:2] "term frequency" "tf" > - attr(*, "dim")= int [1:2] 2 1 > > > > m<-as.matrix(tdm) > > > m > [,1] > [1,] List,2 > [2,] List,2 > > > ####### > > Pero no logro poder avanzar en los pasos para tener la comparativa de > palabras por años par avanzar en una visualización de wordcloud. > Si alguien se le ocurre alguna idea, agradecería mucho la ayuda. > > _______________________________________________ > 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]]
Buenas tardes, grupo. Agradecido Carlos por tu orientación y Eduardo. Efectivamente, seguí el ejemplo de wordclouds, y al igual que anteriormente logró hacer la nube de texto, pero sólo por cada uno de los textos considerados. Tengo los dos "corpus clean" por cada uno de los informes que estoy considerando: año 2005 y 2013.>tdm05<-TermDocumentMatrix(cor.05.cl) >tdm13<-TermDocumentMatrix(cor.13.cl) > m05<-as.matrix(tdm05) > m13<-as.matrix(tdm13)>v05 <- sort(rowSums(m05),decreasing=TRUE)> v13 <- sort(rowSums(m13),decreasing=TRUE) > df05<-data.frame(word = names(v05), freq=v05) > df13<-data.frame(word = names(v13), freq=v13) > wordcloud(df05$word,df05$freq)There were 50 or more warnings (use warnings() to see the first 50)> head(df05)word freq seguridad seguridad 56 ciudadana ciudadana 40 funcionarios funcionarios 33 policiales policiales 32 nacional nacional 28 policial policial 28> wordcloud(df13$word,df13$freq)There were 34 warnings (use warnings() to see them)> head(df13)word freq seguridad seguridad 33 homicidios homicidios 29 año año 27 país país 21 inseguridad inseguridad 20 violencia violencia 20 Como ven, puedo seguir el procedimiento hasta obtener el wordcloud por cada uno de los informes, pero no logro encontrar la manera de unir los dos documentos de manera que pueda mostrarlos comparativamente en dos wordclouds. En este sentido, he leído, y por lo que entiendo los dos documentos se unen en un solo corpus, que debería contener los dos documentos. Eso lo hice, con los informes, y efectivamente podría representar una sola ventana con el wordcloud de ambos informes. Sin embargo, cuando trato de aplicar colnames, el mensaje de error sigue siendo "length of 'dimnames' [2] not equal to array extent", es decir, como si no pudiera aplicar las columnas porque se trata de un solo documento. Entonces, solicito una vez más su valiosa ayuda en lo relacionado con lo siguiente: Después de tener ambos data.frame (año 2005 y año 2013) es que se deben unir los datos. Ahora bien, esto debe realizarse con la orden Corpus? Como dije, lo trabajé uniéndolos en esa orden y me dio el mensaje "dimnames [2] no equal to array extent en el paso de aplicación de nombres de columnas. Los uní antes, como en el siguiente ejemplo http://www.webmining.cl/2014/05/text-mining-comparacion-de-2-discursos-presidenciales-del-21-de-mayo-usando-r/ y tampoco logré aplicarle colnames, ni tener la forma de matriz que se requiere para colocar los años en las columnas y las palabras contadas en las filas. Realmente he estado estudiando la herramienta R, y leído varios artículos y revisado materiales relacionados para buscar la manera, pero no logro dar con la manera de visualizar. Gracias nuevamente por la atención. Y gracias por la disposición. Cordial y atentamente, El día 25 de julio de 2014, 0:16, Alfredo David Alvarado Ríos <david.alvarado.r en gmail.com> escribió:> Buenas noches grupo. Saludos cordiales. > > He seguido en la búsqueda de una forma que me permita realizar la > comparación de dos documentos pertenecientes a los años 2005 y 2013, y > que pueda representar finalmente con wordcloud y con una table en la > que las columnas sean los años de cada informe "2005" y "2013", y las > filas sean las palabras con la frecuencia de cada una de ellas por > cada informe: > > > ---------------------------------- > | | 2005 | 2013 | > ---------------------------------- > | terminos | | | > ---------------------------------- > | terminos | | | > ---------------------------------- > > > De manera que buscando y experimentando, adaptando de otras > experiencias logré llegar a lo siguiente: > > ########## > >>informes<-c("2013", "2005") >>pathname<-"C:/Users/d_2/Documents/Comision/PLAN de INSPECCIONES/Informes/" > >>TDM<-function(informes, pathname) { > info.dir<-sprintf("%s/%s", pathname, informes) > info.cor<-Corpus(DirSource(directory=info.dir, encoding="UTF-8")) > info.cor.cl<-tm_map(info.cor, content_transformer(tolower)) > info.cor.cl<-tm_map(info.cor.cl, stripWhitespace) > info.cor.cl<-tm_map(info.cor.cl,removePunctuation) > sw<-readLines("C:/Users/d_2/Documents/StopWords.txt", encoding="UTF-8") > sw<-iconv(enc2utf8(sw), sub = "byte") > info.cor.cl<-tm_map(info.cor.cl, removeWords, stopwords("spanish")) > info.tdm<-TermDocumentMatrix(info.cor.cl) > result<-list(name = informes, tdm= info.tdm) > } >>tdm<-lapply(informes, TDM, path = pathname) > > Resultado: > >> tdm > [[1]] > [[1]]$name > [1] "2013" > [[1]]$tdm > <<TermDocumentMatrix (terms: 1540, documents: 1)>> > Non-/sparse entries: 1540/0 > Sparsity : 0% > Maximal term length: 18 > Weighting : term frequency (tf) > > [[2]] > [[2]]$name > [1] "2005" > [[2]]$tdm > <<TermDocumentMatrix (terms: 1849, documents: 1)>> > Non-/sparse entries: 1849/0 > Sparsity : 0% > Maximal term length: 19 > Weighting : term frequency (tf) > >> str(tdm) > List of 2 > $ :List of 2 > ..$ name: "2013" > ..$ tdm :List of 6 > .. ..$ i : int [1:1540] 1 2 3 4 5 6 7 8 9 10 ... > .. ..$ j : int [1:1540] 1 1 1 1 1 1 1 1 1 1 ... > .. ..$ v : num [1:1540] 1 5 8 1 1 1 1 3 1 1 ... > .. ..$ nrow : int 1540 > .. ..$ ncol : int 1 > .. ..$ dimnames:List of 2 > .. .. ..$ Terms: [1:1540] "070812" "100" "100000" "117735" ... > .. .. ..$ Docs : "2013_21SeguridadCiudadana.txt" > .. ..- attr(*, "class")= [1:2] "TermDocumentMatrix" "simple_triplet_matrix" > .. ..- attr(*, "weighting")= [1:2] "term frequency" "tf" > $ :List of 2 > ..$ name: "2005" > ..$ tdm :List of 6 > .. ..$ i : int [1:1849] 1 2 3 4 5 6 7 8 9 10 ... > .. ..$ j : int [1:1849] 1 1 1 1 1 1 1 1 1 1 ... > .. ..$ v : num [1:1849] 1 1 1 1 1 1 1 1 1 1 ... > .. ..$ nrow : int 1849 > .. ..$ ncol : int 1 > .. ..$ dimnames:List of 2 > .. .. ..$ Terms: [1:1849] "071004" "100000" "101005" "1022" ... > .. .. ..$ Docs : "05_seguridad_ciudadana.txt" > .. ..- attr(*, "class")= [1:2] "TermDocumentMatrix" "simple_triplet_matrix" > .. ..- attr(*, "weighting")= [1:2] "term frequency" "tf" >> >>m<-as.matrix(tdm) > > ######## > > Al probar str(tdm), se obtiene lo siguiente: > > List of 2 > $ :List of 2 > ..$ name: chr "2013" > ..$ tdm :List of 6 > .. ..$ i : int [1:1540] 1 2 3 4 5 6 7 8 9 10 ... > .. ..$ j : int [1:1540] 1 1 1 1 1 1 1 1 1 1 ... > .. ..$ v : num [1:1540] 1 5 8 1 1 1 1 3 1 1 ... > .. ..$ nrow : int 1540 > .. ..$ ncol : int 1 > .. ..$ dimnames:List of 2 > .. .. ..$ Terms: chr [1:1540] "070812" "100" "100000" "117735" ... > .. .. ..$ Docs : chr "2013_21SeguridadCiudadana.txt" > .. ..- attr(*, "class")= chr [1:2] "TermDocumentMatrix" > "simple_triplet_matrix" > .. ..- attr(*, "weighting")= chr [1:2] "term frequency" "tf" > $ :List of 2 > ..$ name: chr "2005" > ..$ tdm :List of 6 > .. ..$ i : int [1:1849] 1 2 3 4 5 6 7 8 9 10 ... > .. ..$ j : int [1:1849] 1 1 1 1 1 1 1 1 1 1 ... > .. ..$ v : num [1:1849] 1 1 1 1 1 1 1 1 1 1 ... > .. ..$ nrow : int 1849 > .. ..$ ncol : int 1 > .. ..$ dimnames:List of 2 > .. .. ..$ Terms: chr [1:1849] "071004" "100000" "101005" "1022" ... > .. .. ..$ Docs : chr "05_seguridad_ciudadana.txt" > .. ..- attr(*, "class")= chr [1:2] "TermDocumentMatrix" > "simple_triplet_matrix" > .. ..- attr(*, "weighting")= chr [1:2] "term frequency" "tf" > - attr(*, "dim")= int [1:2] 2 1 > > >> m<-as.matrix(tdm) > >> m > [,1] > [1,] List,2 > [2,] List,2 > > > ####### > > Pero no logro poder avanzar en los pasos para tener la comparativa de > palabras por años par avanzar en una visualización de wordcloud. > Si alguien se le ocurre alguna idea, agradecería mucho la ayuda.
Hola, La referencia (gracias por proporcionarla) que has incluido es bastante clara y se puede seguir. ¿Has podido sobre tus dos discursos utilizar la misma lógica? La forma de salir de dudas, para empezar, es que adjuntaras el código que estás empleando por ver si hay algún error evidente. Aunque la forma adecuada para que te podamos ayudar es con un ejemplo reproducible: código + datos. Saludos, Carlos Ortega www.qualityexcellence.es El 28 de julio de 2014, 21:24, Alfredo David Alvarado Ríos < david.alvarado.r@gmail.com> escribió:> Buenas tardes, grupo. Agradecido Carlos por tu orientación y Eduardo. > Efectivamente, seguí el ejemplo de wordclouds, y al igual que > anteriormente logró hacer la nube de texto, pero sólo por cada uno de > los textos considerados. > Tengo los dos "corpus clean" por cada uno de los informes que estoy > considerando: año 2005 y 2013. > > >tdm05<-TermDocumentMatrix(cor.05.cl) > >tdm13<-TermDocumentMatrix(cor.13.cl) > > m05<-as.matrix(tdm05) > > m13<-as.matrix(tdm13) > >v05 <- sort(rowSums(m05),decreasing=TRUE) > > v13 <- sort(rowSums(m13),decreasing=TRUE) > > df05<-data.frame(word = names(v05), freq=v05) > > df13<-data.frame(word = names(v13), freq=v13) > > wordcloud(df05$word,df05$freq) > There were 50 or more warnings (use warnings() to see the first 50) > > head(df05) > word freq > seguridad seguridad 56 > ciudadana ciudadana 40 > funcionarios funcionarios 33 > policiales policiales 32 > nacional nacional 28 > policial policial 28 > > > wordcloud(df13$word,df13$freq) > There were 34 warnings (use warnings() to see them) > > > head(df13) > word freq > seguridad seguridad 33 > homicidios homicidios 29 > año año 27 > país país 21 > inseguridad inseguridad 20 > violencia violencia 20 > > Como ven, puedo seguir el procedimiento hasta obtener el wordcloud por > cada uno de los informes, pero no logro encontrar la manera de unir > los dos documentos de manera que pueda mostrarlos comparativamente en > dos wordclouds. > En este sentido, he leído, y por lo que entiendo los dos documentos se > unen en un solo corpus, que debería contener los dos documentos. Eso > lo hice, con los informes, y efectivamente podría representar una sola > ventana con el wordcloud de ambos informes. > Sin embargo, cuando trato de aplicar colnames, el mensaje de error > sigue siendo "length of 'dimnames' [2] not equal to array extent", es > decir, como si no pudiera aplicar las columnas porque se trata de un > solo documento. > Entonces, solicito una vez más su valiosa ayuda en lo relacionado con > lo siguiente: > Después de tener ambos data.frame (año 2005 y año 2013) es que se > deben unir los datos. Ahora bien, esto debe realizarse con la orden > Corpus? Como dije, lo trabajé uniéndolos en esa orden y me dio el > mensaje "dimnames [2] no equal to array extent en el paso de > aplicación de nombres de columnas. > Los uní antes, como en el siguiente ejemplo > > http://www.webmining.cl/2014/05/text-mining-comparacion-de-2-discursos-presidenciales-del-21-de-mayo-usando-r/ > y tampoco logré aplicarle colnames, ni tener la forma de matriz que se > requiere para colocar los años en las columnas y las palabras contadas > en las filas. > Realmente he estado estudiando la herramienta R, y leído varios > artículos y revisado materiales relacionados para buscar la manera, > pero no logro dar con la manera de visualizar. > Gracias nuevamente por la atención. Y gracias por la disposición. > Cordial y atentamente, > > > > > > El día 25 de julio de 2014, 0:16, Alfredo David Alvarado Ríos > <david.alvarado.r@gmail.com> escribió: > > Buenas noches grupo. Saludos cordiales. > > > > He seguido en la búsqueda de una forma que me permita realizar la > > comparación de dos documentos pertenecientes a los años 2005 y 2013, y > > que pueda representar finalmente con wordcloud y con una table en la > > que las columnas sean los años de cada informe "2005" y "2013", y las > > filas sean las palabras con la frecuencia de cada una de ellas por > > cada informe: > > > > > > ---------------------------------- > > | | 2005 | 2013 | > > ---------------------------------- > > | terminos | | | > > ---------------------------------- > > | terminos | | | > > ---------------------------------- > > > > > > De manera que buscando y experimentando, adaptando de otras > > experiencias logré llegar a lo siguiente: > > > > ########## > > > >>informes<-c("2013", "2005") > >>pathname<-"C:/Users/d_2/Documents/Comision/PLAN de > INSPECCIONES/Informes/" > > > >>TDM<-function(informes, pathname) { > > info.dir<-sprintf("%s/%s", pathname, informes) > > info.cor<-Corpus(DirSource(directory=info.dir, encoding="UTF-8")) > > info.cor.cl<-tm_map(info.cor, content_transformer(tolower)) > > info.cor.cl<-tm_map(info.cor.cl, stripWhitespace) > > info.cor.cl<-tm_map(info.cor.cl,removePunctuation) > > sw<-readLines("C:/Users/d_2/Documents/StopWords.txt", encoding="UTF-8") > > sw<-iconv(enc2utf8(sw), sub = "byte") > > info.cor.cl<-tm_map(info.cor.cl, removeWords, stopwords("spanish")) > > info.tdm<-TermDocumentMatrix(info.cor.cl) > > result<-list(name = informes, tdm= info.tdm) > > } > >>tdm<-lapply(informes, TDM, path = pathname) > > > > Resultado: > > > >> tdm > > [[1]] > > [[1]]$name > > [1] "2013" > > [[1]]$tdm > > <<TermDocumentMatrix (terms: 1540, documents: 1)>> > > Non-/sparse entries: 1540/0 > > Sparsity : 0% > > Maximal term length: 18 > > Weighting : term frequency (tf) > > > > [[2]] > > [[2]]$name > > [1] "2005" > > [[2]]$tdm > > <<TermDocumentMatrix (terms: 1849, documents: 1)>> > > Non-/sparse entries: 1849/0 > > Sparsity : 0% > > Maximal term length: 19 > > Weighting : term frequency (tf) > > > >> str(tdm) > > List of 2 > > $ :List of 2 > > ..$ name: "2013" > > ..$ tdm :List of 6 > > .. ..$ i : int [1:1540] 1 2 3 4 5 6 7 8 9 10 ... > > .. ..$ j : int [1:1540] 1 1 1 1 1 1 1 1 1 1 ... > > .. ..$ v : num [1:1540] 1 5 8 1 1 1 1 3 1 1 ... > > .. ..$ nrow : int 1540 > > .. ..$ ncol : int 1 > > .. ..$ dimnames:List of 2 > > .. .. ..$ Terms: [1:1540] "070812" "100" "100000" "117735" ... > > .. .. ..$ Docs : "2013_21SeguridadCiudadana.txt" > > .. ..- attr(*, "class")= [1:2] "TermDocumentMatrix" > "simple_triplet_matrix" > > .. ..- attr(*, "weighting")= [1:2] "term frequency" "tf" > > $ :List of 2 > > ..$ name: "2005" > > ..$ tdm :List of 6 > > .. ..$ i : int [1:1849] 1 2 3 4 5 6 7 8 9 10 ... > > .. ..$ j : int [1:1849] 1 1 1 1 1 1 1 1 1 1 ... > > .. ..$ v : num [1:1849] 1 1 1 1 1 1 1 1 1 1 ... > > .. ..$ nrow : int 1849 > > .. ..$ ncol : int 1 > > .. ..$ dimnames:List of 2 > > .. .. ..$ Terms: [1:1849] "071004" "100000" "101005" "1022" ... > > .. .. ..$ Docs : "05_seguridad_ciudadana.txt" > > .. ..- attr(*, "class")= [1:2] "TermDocumentMatrix" > "simple_triplet_matrix" > > .. ..- attr(*, "weighting")= [1:2] "term frequency" "tf" > >> > >>m<-as.matrix(tdm) > > > > ######## > > > > Al probar str(tdm), se obtiene lo siguiente: > > > > List of 2 > > $ :List of 2 > > ..$ name: chr "2013" > > ..$ tdm :List of 6 > > .. ..$ i : int [1:1540] 1 2 3 4 5 6 7 8 9 10 ... > > .. ..$ j : int [1:1540] 1 1 1 1 1 1 1 1 1 1 ... > > .. ..$ v : num [1:1540] 1 5 8 1 1 1 1 3 1 1 ... > > .. ..$ nrow : int 1540 > > .. ..$ ncol : int 1 > > .. ..$ dimnames:List of 2 > > .. .. ..$ Terms: chr [1:1540] "070812" "100" "100000" "117735" ... > > .. .. ..$ Docs : chr "2013_21SeguridadCiudadana.txt" > > .. ..- attr(*, "class")= chr [1:2] "TermDocumentMatrix" > > "simple_triplet_matrix" > > .. ..- attr(*, "weighting")= chr [1:2] "term frequency" "tf" > > $ :List of 2 > > ..$ name: chr "2005" > > ..$ tdm :List of 6 > > .. ..$ i : int [1:1849] 1 2 3 4 5 6 7 8 9 10 ... > > .. ..$ j : int [1:1849] 1 1 1 1 1 1 1 1 1 1 ... > > .. ..$ v : num [1:1849] 1 1 1 1 1 1 1 1 1 1 ... > > .. ..$ nrow : int 1849 > > .. ..$ ncol : int 1 > > .. ..$ dimnames:List of 2 > > .. .. ..$ Terms: chr [1:1849] "071004" "100000" "101005" "1022" ... > > .. .. ..$ Docs : chr "05_seguridad_ciudadana.txt" > > .. ..- attr(*, "class")= chr [1:2] "TermDocumentMatrix" > > "simple_triplet_matrix" > > .. ..- attr(*, "weighting")= chr [1:2] "term frequency" "tf" > > - attr(*, "dim")= int [1:2] 2 1 > > > > > >> m<-as.matrix(tdm) > > > >> m > > [,1] > > [1,] List,2 > > [2,] List,2 > > > > > > ####### > > > > Pero no logro poder avanzar en los pasos para tener la comparativa de > > palabras por años par avanzar en una visualización de wordcloud. > > Si alguien se le ocurre alguna idea, agradecería mucho la ayuda. > > _______________________________________________ > 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]]