[R-es] Problema con Histograma con porcentajes usando ggplot

javier.ruben.marcuzzi en gmail.com javier.ruben.marcuzzi en gmail.com
Lun Jun 19 04:46:34 CEST 2017


Estimado Antonio Rodriguez Andres

Usted dice que está en sus inicios con R, y desea realizar un gráfico. Esto no es problema, el inconveniente es que está mezclando librerías, es lógico, se puede y facilita el trabajo, pero como usted no tiene la experiencia necesaria está mezclando conceptos y formas de trabajo distintas.

Le recomiendo que pare, busque un ejemplo o un libro de R donde hay algo semejante a lo que usted desea, realiza unos ejercicios y comienza otra vez.

Por ejemplo ggplot2 tiene algunos efectos gráficos de presentación vistosos, pero la forma de trabajo requiere conocer algo más el lenguaje, si intenta lo mismo pero con solo los paquetes básicos comprenderá cómo se realizan los cálculos, algo de trabajo con datos, algunas alternativas para realizar el mismo trabajo de distinta forma, y luego busca utilizar ggplot2 como pretende ahora. Creo que las posibilidades de obtener mejores resultados se incrementan si ahora se frena y puede replantear el problema en su mente.

Espere, descanse, el lunes comienza otra vez desde cero y el martes regresa a su problema, invertirá mejor su tiempo con R si aumenta el manejo de lo básico (antes de usar varias librerías o alternativas que aparecieron como sugerencias a su pregunta).

Javier Rubén Marcuzzi

De: Antonio Rodriguez Andres
Enviado: domingo, 18 de junio de 2017 21:20
Para: Carlos J. Gil Bellosta
CC: r-help-es
Asunto: Re: [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)




_______________________________________________
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)




-- 
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/4db95e41/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/4db95e41/attachment-0001.png>


Más información sobre la lista de distribución R-help-es