Antonio Rodriguez Andres
2017-Jun-18 23:07 UTC
[R-es] Problema con Histograma con porcentajes usando ggplot
#Simple table con frecuencias absolutas y crear relativas count =table(ess$stflife) percent = 100* (count)/sum(count) Carlos he creado a esto a nivel general en vez de usar prop.table. Según lo que dices o entiendo, debo de usar la función ddply para hacerlo a nivel de todos los paises, y entiendo que ddply (, c(""), debo de indicar los paises? Saludos 2017-06-18 17:37 GMT-05:00 Carlos J. Gil Bellosta <cgb en datanalytics.com>:> 1) Agrega por país y nivel (en freq). > 2) Por país, haz algo así como pct = 100 * freq / sum(freq). > > Con plyr, dos líneas. > > El 19 de junio de 2017, 0:20, Antonio Rodriguez Andres < > antoniorodriguezandres70 en gmail.com> escribió: > >> Gracias. Alguna idea de que usar para calcular los porcentajes y >> almacenarlos. Se puede usar flat table? >> >> El 18/06/2017 4:50 p. m., "Carlos J. Gil Bellosta" <cgb en datanalytics.com> >> escribió: >> >>> Los porcentajes que obtienes con tu código son sobre todas las facetas, >>> no país a país. >>> >>> Calcula los porcentajes previamente a por país y representa esa columna >>> en las barras. >>> >>> Un saludo, >>> >>> Carlos J. Gil Bellosta >>> http://www.datanalytics.com >>> >>> >>> >>> El 18 de junio de 2017, 18:23, Antonio Rodriguez Andres < >>> antoniorodriguezandres70 en gmail.com> escribió: >>> >>>> Estimados >>>> >>>> Soy un nuevo usario de R, y estoy usando como base de datos el European >>>> Social Survey, que tiene datos de 40,000 individuos, y alrededor de 23 >>>> países europeos. Lo que he seleccionado es la útima ola, el round 7, para >>>> el año 2014. >>>> >>>> He leido los datos, desde SPSS y aquí tienen la base de datos y que >>>> tipo de objetos se han generado, y tambíen la distribución por pais de la >>>> muestra. No he usado los weights del survey todavía, solo estoy explorando >>>> los datos. >>>> >>>> class(ess) >>>> >>>> ## [1] "lbl_df" "data.frame" >>>> >>>> frq(ess$cntry) >>>> >>>> ## # Country >>>> ## >>>> ## val label frq raw.prc valid.prc cum.prc >>>> ## 1 Austria 1795 4.47 4.47 4.47 >>>> ## 2 Belgium 1769 4.40 4.40 8.87 >>>> ## 3 Switzerland 1532 3.81 3.81 12.68 >>>> ## 4 Czech Republic 2148 5.35 5.35 18.03 >>>> ## 5 Germany 3045 7.58 7.58 25.60 >>>> ## 6 Denmark 1502 3.74 3.74 29.34 >>>> ## 7 Estonia 2051 5.10 5.10 34.45 >>>> ## 8 Spain 1925 4.79 4.79 39.24 >>>> ## 9 Finland 2087 5.19 5.19 44.43 >>>> ## 10 France 1917 4.77 4.77 49.20 >>>> ## 11 United Kingdom 2264 5.63 5.63 54.83 >>>> ## 12 Hungary 1698 4.23 4.23 59.06 >>>> ## 13 Ireland 2390 5.95 5.95 65.01 >>>> ## 14 Israel 2562 6.38 6.38 71.38 >>>> ## 15 Lithuania 2250 5.60 5.60 76.98 >>>> ## 16 Netherlands 1919 4.78 4.78 81.76 >>>> ## 17 Norway 1436 3.57 3.57 85.33 >>>> ## 18 Poland 1615 4.02 4.02 89.35 >>>> ## 19 Portugal 1265 3.15 3.15 92.50 >>>> ## 20 Sweden 1791 4.46 4.46 96.95 >>>> ## 21 Slovenia 1224 3.05 3.05 100.00 >>>> ## NA NA 0 0.00 NA NA >>>> Ahora voy a hacer un histograma de la variable satisfaccion con la >>>> vida, cuyo rango es de 0-10 (numeros enteros, donde mayor valor indica >>>> mayor satisfacción con la vida. >>>> >>>> get_labels(ess$stflife) >>>> >>>> >>>> ## [1] "Extremely dissatisfied" "1" >>>> ## [3] "2" "3" >>>> ## [5] "4" "5" >>>> ## [7] "6" "7" >>>> ## [9] "8" "9" >>>> ## [11] "Extremely satisfied" "Refusal" >>>> >>>> ## [13] "Don't know" "No answer" >>>> >>>> Lo que he hecho es hacer una tabla de la distribución de esa variable >>>> para un sólo pais Dinamarca (DK) >>>> >>>> flat_table(subset(ess, cntry %in% c("DK")), stflife, margin= "row") >>>> >>>> ## x 0 1 2 3 4 5 6 7 8 9 10 >>>> ## >>>> >>>> ## 0.33 0.27 0.47 1.33 0.93 2.87 3.67 8.20 28.40 29.53 24.00 >>>> >>>> >>>> Sin embargo al hacer un histrogama para los paises con ggplot, anda >>>> algo mal con los porcentajes. Por ejemplo sabemos que un 24 % respondió que >>>> están muy satisfechos en DK. Sin embargo >>>> >>>> los porcentajes son muy pequeños. >>>> >>>> >>>> myplot = ggplot(ess, aes (stflife)) + >>>> geom_bar(aes(y = (..count..)/sum(..count..))) + >>>> scale_y_continuous(labels=scales::percent) + >>>> ylab("Relative frequencies") + facet_wrap(~cntry) >>>> >>>> plot(myplot) >>>> >>>> [image: Inline images 1] >>>> >>>> >>>> _______________________________________________ >>>> R-help-es mailing list >>>> R-help-es en r-project.org >>>> https://stat.ethz.ch/mailman/listinfo/r-help-es >>>> >>> >>> >-- Member, Editorial Committee, *The Economic and Labour Relations Review* (a SAGE journal) http://elr.sagepub.com/ Member, Editorial Committee, African Journal of Economic and Management Studies http://emeraldgrouppublishing.com/products/journals/editorial_team.htm?id=ajems https://www.researchgate.net/profile/Antonio_Andres (Research Gate profile) ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20170618/9b01f742/attachment-0001.html> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: imagen.png Type: image/png Size: 79665 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20170618/9b01f742/attachment-0001.png>
Antonio Rodriguez Andres
2017-Jun-19 00:01 UTC
[R-es] Problema con Histograma con porcentajes usando ggplot
He conseguido el total para un país, pero no me deja usar percent = count() /sum(count), alguna idea, entiendo que puedo esar la misma sintaxis para el barplot ess %>% filter(cntry %in% c("DK")) %>% count (stflife) %>% print 2017-06-18 18:07 GMT-05:00 Antonio Rodriguez Andres < antoniorodriguezandres70 en gmail.com>:> #Simple table con frecuencias absolutas y crear relativas > > count =table(ess$stflife) > percent = 100* (count)/sum(count) > > Carlos he creado a esto a nivel general en vez de usar prop.table. Según > lo que dices o entiendo, debo de usar la función > ddply para hacerlo a nivel de todos los paises, y entiendo que ddply (, > c(""), debo de indicar los paises? > Saludos > > 2017-06-18 17:37 GMT-05:00 Carlos J. Gil Bellosta <cgb en datanalytics.com>: > >> 1) Agrega por país y nivel (en freq). >> 2) Por país, haz algo así como pct = 100 * freq / sum(freq). >> >> Con plyr, dos líneas. >> >> El 19 de junio de 2017, 0:20, Antonio Rodriguez Andres < >> antoniorodriguezandres70 en gmail.com> escribió: >> >>> Gracias. Alguna idea de que usar para calcular los porcentajes y >>> almacenarlos. Se puede usar flat table? >>> >>> El 18/06/2017 4:50 p. m., "Carlos J. Gil Bellosta" <cgb en datanalytics.com> >>> escribió: >>> >>>> Los porcentajes que obtienes con tu código son sobre todas las facetas, >>>> no país a país. >>>> >>>> Calcula los porcentajes previamente a por país y representa esa columna >>>> en las barras. >>>> >>>> Un saludo, >>>> >>>> Carlos J. Gil Bellosta >>>> http://www.datanalytics.com >>>> >>>> >>>> >>>> El 18 de junio de 2017, 18:23, Antonio Rodriguez Andres < >>>> antoniorodriguezandres70 en gmail.com> escribió: >>>> >>>>> Estimados >>>>> >>>>> Soy un nuevo usario de R, y estoy usando como base de datos el >>>>> European Social Survey, que tiene datos de 40,000 individuos, y alrededor >>>>> de 23 países europeos. Lo que he seleccionado es la útima ola, el round 7, >>>>> para el año 2014. >>>>> >>>>> He leido los datos, desde SPSS y aquí tienen la base de datos y que >>>>> tipo de objetos se han generado, y tambíen la distribución por pais de la >>>>> muestra. No he usado los weights del survey todavía, solo estoy explorando >>>>> los datos. >>>>> >>>>> class(ess) >>>>> >>>>> ## [1] "lbl_df" "data.frame" >>>>> >>>>> frq(ess$cntry) >>>>> >>>>> ## # Country >>>>> ## >>>>> ## val label frq raw.prc valid.prc cum.prc >>>>> ## 1 Austria 1795 4.47 4.47 4.47 >>>>> ## 2 Belgium 1769 4.40 4.40 8.87 >>>>> ## 3 Switzerland 1532 3.81 3.81 12.68 >>>>> ## 4 Czech Republic 2148 5.35 5.35 18.03 >>>>> ## 5 Germany 3045 7.58 7.58 25.60 >>>>> ## 6 Denmark 1502 3.74 3.74 29.34 >>>>> ## 7 Estonia 2051 5.10 5.10 34.45 >>>>> ## 8 Spain 1925 4.79 4.79 39.24 >>>>> ## 9 Finland 2087 5.19 5.19 44.43 >>>>> ## 10 France 1917 4.77 4.77 49.20 >>>>> ## 11 United Kingdom 2264 5.63 5.63 54.83 >>>>> ## 12 Hungary 1698 4.23 4.23 59.06 >>>>> ## 13 Ireland 2390 5.95 5.95 65.01 >>>>> ## 14 Israel 2562 6.38 6.38 71.38 >>>>> ## 15 Lithuania 2250 5.60 5.60 76.98 >>>>> ## 16 Netherlands 1919 4.78 4.78 81.76 >>>>> ## 17 Norway 1436 3.57 3.57 85.33 >>>>> ## 18 Poland 1615 4.02 4.02 89.35 >>>>> ## 19 Portugal 1265 3.15 3.15 92.50 >>>>> ## 20 Sweden 1791 4.46 4.46 96.95 >>>>> ## 21 Slovenia 1224 3.05 3.05 100.00 >>>>> ## NA NA 0 0.00 NA NA >>>>> Ahora voy a hacer un histograma de la variable satisfaccion con la >>>>> vida, cuyo rango es de 0-10 (numeros enteros, donde mayor valor indica >>>>> mayor satisfacción con la vida. >>>>> >>>>> get_labels(ess$stflife) >>>>> >>>>> >>>>> ## [1] "Extremely dissatisfied" "1" >>>>> ## [3] "2" "3" >>>>> ## [5] "4" "5" >>>>> ## [7] "6" "7" >>>>> ## [9] "8" "9" >>>>> ## [11] "Extremely satisfied" "Refusal" >>>>> >>>>> ## [13] "Don't know" "No answer" >>>>> >>>>> Lo que he hecho es hacer una tabla de la distribución de esa variable >>>>> para un sólo pais Dinamarca (DK) >>>>> >>>>> flat_table(subset(ess, cntry %in% c("DK")), stflife, margin= "row") >>>>> >>>>> ## x 0 1 2 3 4 5 6 7 8 9 10 >>>>> ## >>>>> >>>>> ## 0.33 0.27 0.47 1.33 0.93 2.87 3.67 8.20 28.40 29.53 24.00 >>>>> >>>>> >>>>> Sin embargo al hacer un histrogama para los paises con ggplot, anda >>>>> algo mal con los porcentajes. Por ejemplo sabemos que un 24 % respondió que >>>>> están muy satisfechos en DK. Sin embargo >>>>> >>>>> los porcentajes son muy pequeños. >>>>> >>>>> >>>>> myplot = ggplot(ess, aes (stflife)) + >>>>> geom_bar(aes(y = (..count..)/sum(..count..))) + >>>>> scale_y_continuous(labels=scales::percent) + >>>>> ylab("Relative frequencies") + facet_wrap(~cntry) >>>>> >>>>> plot(myplot) >>>>> >>>>> [image: Inline images 1] >>>>> >>>>> >>>>> _______________________________________________ >>>>> R-help-es mailing list >>>>> R-help-es en r-project.org >>>>> https://stat.ethz.ch/mailman/listinfo/r-help-es >>>>> >>>> >>>> >> > > > -- > > Member, Editorial Committee, *The Economic and Labour Relations Review* (a > SAGE journal) > > http://elr.sagepub.com/ > > Member, Editorial Committee, African Journal of Economic and Management > Studies > > http://emeraldgrouppublishing.com/products/journals/ > editorial_team.htm?id=ajems > > https://www.researchgate.net/profile/Antonio_Andres (Research Gate > profile) > > >-- Member, Editorial Committee, *The Economic and Labour Relations Review* (a SAGE journal) http://elr.sagepub.com/ Member, Editorial Committee, African Journal of Economic and Management Studies http://emeraldgrouppublishing.com/products/journals/editorial_team.htm?id=ajems https://www.researchgate.net/profile/Antonio_Andres (Research Gate profile) ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20170618/dd69658e/attachment-0001.html> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: imagen.png Type: image/png Size: 79665 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20170618/dd69658e/attachment-0001.png>
Antonio Rodriguez Andres
2017-Jun-19 00:19 UTC
[R-es] Problema con Histograma con porcentajes usando ggplot
Creo que esto me da para DK, y luego veré como aplicar el barplot ess %>% filter(cntry %in% c("DK")) %>% count (stflife) %>% mutate (freq = (n /sum(n)*100))%>% print 2017-06-18 19:01 GMT-05:00 Antonio Rodriguez Andres < antoniorodriguezandres70 en gmail.com>:> He conseguido el total para un país, pero no me deja usar percent > count() /sum(count), alguna idea, entiendo que puedo esar la misma sintaxis > para el barplot > > ess %>% > filter(cntry %in% c("DK")) %>% > count (stflife) %>% > print > > > 2017-06-18 18:07 GMT-05:00 Antonio Rodriguez Andres < > antoniorodriguezandres70 en gmail.com>: > >> #Simple table con frecuencias absolutas y crear relativas >> >> count =table(ess$stflife) >> percent = 100* (count)/sum(count) >> >> Carlos he creado a esto a nivel general en vez de usar prop.table. Según >> lo que dices o entiendo, debo de usar la función >> ddply para hacerlo a nivel de todos los paises, y entiendo que ddply (, >> c(""), debo de indicar los paises? >> Saludos >> >> 2017-06-18 17:37 GMT-05:00 Carlos J. Gil Bellosta <cgb en datanalytics.com>: >> >>> 1) Agrega por país y nivel (en freq). >>> 2) Por país, haz algo así como pct = 100 * freq / sum(freq). >>> >>> Con plyr, dos líneas. >>> >>> El 19 de junio de 2017, 0:20, Antonio Rodriguez Andres < >>> antoniorodriguezandres70 en gmail.com> escribió: >>> >>>> Gracias. Alguna idea de que usar para calcular los porcentajes y >>>> almacenarlos. Se puede usar flat table? >>>> >>>> El 18/06/2017 4:50 p. m., "Carlos J. Gil Bellosta" < >>>> cgb en datanalytics.com> escribió: >>>> >>>>> Los porcentajes que obtienes con tu código son sobre todas las >>>>> facetas, no país a país. >>>>> >>>>> Calcula los porcentajes previamente a por país y representa esa >>>>> columna en las barras. >>>>> >>>>> Un saludo, >>>>> >>>>> Carlos J. Gil Bellosta >>>>> http://www.datanalytics.com >>>>> >>>>> >>>>> >>>>> El 18 de junio de 2017, 18:23, Antonio Rodriguez Andres < >>>>> antoniorodriguezandres70 en gmail.com> escribió: >>>>> >>>>>> Estimados >>>>>> >>>>>> Soy un nuevo usario de R, y estoy usando como base de datos el >>>>>> European Social Survey, que tiene datos de 40,000 individuos, y alrededor >>>>>> de 23 países europeos. Lo que he seleccionado es la útima ola, el round 7, >>>>>> para el año 2014. >>>>>> >>>>>> He leido los datos, desde SPSS y aquí tienen la base de datos y que >>>>>> tipo de objetos se han generado, y tambíen la distribución por pais de la >>>>>> muestra. No he usado los weights del survey todavía, solo estoy explorando >>>>>> los datos. >>>>>> >>>>>> class(ess) >>>>>> >>>>>> ## [1] "lbl_df" "data.frame" >>>>>> >>>>>> frq(ess$cntry) >>>>>> >>>>>> ## # Country >>>>>> ## >>>>>> ## val label frq raw.prc valid.prc cum.prc >>>>>> ## 1 Austria 1795 4.47 4.47 4.47 >>>>>> ## 2 Belgium 1769 4.40 4.40 8.87 >>>>>> ## 3 Switzerland 1532 3.81 3.81 12.68 >>>>>> ## 4 Czech Republic 2148 5.35 5.35 18.03 >>>>>> ## 5 Germany 3045 7.58 7.58 25.60 >>>>>> ## 6 Denmark 1502 3.74 3.74 29.34 >>>>>> ## 7 Estonia 2051 5.10 5.10 34.45 >>>>>> ## 8 Spain 1925 4.79 4.79 39.24 >>>>>> ## 9 Finland 2087 5.19 5.19 44.43 >>>>>> ## 10 France 1917 4.77 4.77 49.20 >>>>>> ## 11 United Kingdom 2264 5.63 5.63 54.83 >>>>>> ## 12 Hungary 1698 4.23 4.23 59.06 >>>>>> ## 13 Ireland 2390 5.95 5.95 65.01 >>>>>> ## 14 Israel 2562 6.38 6.38 71.38 >>>>>> ## 15 Lithuania 2250 5.60 5.60 76.98 >>>>>> ## 16 Netherlands 1919 4.78 4.78 81.76 >>>>>> ## 17 Norway 1436 3.57 3.57 85.33 >>>>>> ## 18 Poland 1615 4.02 4.02 89.35 >>>>>> ## 19 Portugal 1265 3.15 3.15 92.50 >>>>>> ## 20 Sweden 1791 4.46 4.46 96.95 >>>>>> ## 21 Slovenia 1224 3.05 3.05 100.00 >>>>>> ## NA NA 0 0.00 NA NA >>>>>> Ahora voy a hacer un histograma de la variable satisfaccion con la >>>>>> vida, cuyo rango es de 0-10 (numeros enteros, donde mayor valor indica >>>>>> mayor satisfacción con la vida. >>>>>> >>>>>> get_labels(ess$stflife) >>>>>> >>>>>> >>>>>> ## [1] "Extremely dissatisfied" "1" >>>>>> ## [3] "2" "3" >>>>>> ## [5] "4" "5" >>>>>> ## [7] "6" "7" >>>>>> ## [9] "8" "9" >>>>>> ## [11] "Extremely satisfied" "Refusal" >>>>>> >>>>>> ## [13] "Don't know" "No answer" >>>>>> >>>>>> Lo que he hecho es hacer una tabla de la distribución de esa variable >>>>>> para un sólo pais Dinamarca (DK) >>>>>> >>>>>> flat_table(subset(ess, cntry %in% c("DK")), stflife, margin= "row") >>>>>> >>>>>> ## x 0 1 2 3 4 5 6 7 8 9 >>>>>> 10 >>>>>> ## >>>>>> >>>>>> >>>>>> ## 0.33 0.27 0.47 1.33 0.93 2.87 3.67 8.20 28.40 29.53 >>>>>> 24.00 >>>>>> >>>>>> >>>>>> Sin embargo al hacer un histrogama para los paises con ggplot, anda >>>>>> algo mal con los porcentajes. Por ejemplo sabemos que un 24 % respondió que >>>>>> están muy satisfechos en DK. Sin embargo >>>>>> >>>>>> los porcentajes son muy pequeños. >>>>>> >>>>>> >>>>>> myplot = ggplot(ess, aes (stflife)) + >>>>>> geom_bar(aes(y = (..count..)/sum(..count..))) + >>>>>> scale_y_continuous(labels=scales::percent) + >>>>>> ylab("Relative frequencies") + facet_wrap(~cntry) >>>>>> >>>>>> plot(myplot) >>>>>> >>>>>> [image: Inline images 1] >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> R-help-es mailing list >>>>>> R-help-es en r-project.org >>>>>> https://stat.ethz.ch/mailman/listinfo/r-help-es >>>>>> >>>>> >>>>> >>> >> >> >> -- >> >> Member, Editorial Committee, *The Economic and Labour Relations Review* (a >> SAGE journal) >> >> http://elr.sagepub.com/ >> >> Member, Editorial Committee, African Journal of Economic and Management >> Studies >> >> http://emeraldgrouppublishing.com/products/journals/editoria >> l_team.htm?id=ajems >> >> https://www.researchgate.net/profile/Antonio_Andres (Research Gate >> profile) >> >> >> > > > -- > > Member, Editorial Committee, *The Economic and Labour Relations Review* (a > SAGE journal) > > http://elr.sagepub.com/ > > Member, Editorial Committee, African Journal of Economic and Management > Studies > > http://emeraldgrouppublishing.com/products/journals/ > editorial_team.htm?id=ajems > > https://www.researchgate.net/profile/Antonio_Andres (Research Gate > profile) > > >-- Member, Editorial Committee, *The Economic and Labour Relations Review* (a SAGE journal) http://elr.sagepub.com/ Member, Editorial Committee, African Journal of Economic and Management Studies http://emeraldgrouppublishing.com/products/journals/editorial_team.htm?id=ajems https://www.researchgate.net/profile/Antonio_Andres (Research Gate profile) ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20170618/aba634dd/attachment-0001.html> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: imagen.png Type: image/png Size: 79665 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20170618/aba634dd/attachment-0001.png>