2015-08-09

Calcular el porcentaje del total de la columna en R

Title

Problema

Queremos calcular el porcentaje del total de la columna de un data frame en R. En nuestro ejemplo una columna con: 7/397, 23/397 y así sucesivamente.

    x freq
1 Jan    7
2 Feb   23
3 Mar   86
4 Apr  281
Código para crear el data frame anterior:

df <- read.table(text = "x    freq
                        Jan   7
                        Feb   23
                        Mar   86
                        Apr   281", 
                        header =TRUE)

Solución

Empleamos la función prop.table para crear esa columna.

df$prob <- prop.table(df$freq)
# En porcentajes con dos decimales:
df$prob <- round(prop.table(df$freq), 4)*100
    x freq       prob
1 Jan    7 0.01763224
2 Feb   23 0.05793451
3 Mar   86 0.21662469
4 Apr  281 0.70780856
Si deseamos el porcentaje de un mes específico:
prop.table(df$freq)[df$x == "Feb"] 
 [1] 0.05793451

Alternativas

  • Paquete base
  • df$prob <- df$freq/sum(df$freq)
    
  • dplyr
  • library(dplyr)
    df %>% mutate(prob = prop.table(freq))
    # O también
    df %>% mutate(prob = freq / sum(freq))
    
    Un mes específico:
    df %>% filter(x == "Feb")
    
        x freq       prob
    1 Feb   23 0.05793451
    

Referencias

No hay comentarios:

Publicar un comentario

Nube de datos