[R-es] Contar categorías después de ciertos valores

Guillermo.Vinue en uv.es Guillermo.Vinue en uv.es
Lun Mar 12 16:43:13 CET 2018


Muchas gracias Carlos y Javier por la ayuda.

Saludos,

Guillermo

> Hola,
> 
> Esta es una forma...
> 
> #-----------------
> 
> x <- c(3, "A", "B", 5, "A", 4, 5, "A", "A", 3)
> x_n <- as.numeric(x)
> 
> cat_val <- unique(x[is.na(x_n)])
> num_val <- x_n[!is.na(x_n)]
> 
> df <- data.frame(
>                   x_n = x_n,
>                   y = 1:length(x_n),
>                   x = x,
>                   x_l = is.na(df$x_n)
>                  )
> 
> num_df <- data.frame( nume = 0, letra = 0)
> cont <- 0
> for(i in 1:nrow(df)) {
>   if (df[i, 4] == FALSE & df[i + 1, 4] != FALSE & i < nrow(df)) {
>     num <- df[i, 1]
>   }
>   if (df[i, 4] != FALSE) {
>     cont <- cont + 1
>     num_df[cont, 1]  <-  num
>     num_df[cont, 2] <- as.vector(df[i, 3])
>   }
>   if (df[i, 4] == FALSE & df[i + 1, 4] == FALSE & i < nrow(df)) {
>     cont <- cont + 1
>     num <- df[i, 1]
>     num_df[cont, 1] <-  num
>     num_df[cont, 2] <- 0
>   }
> 
> }
> 
> 
> library(dplyr)
> library(tidyr)
> 
> res_df <- num_df %>%
>   group_by(nume, letra) %>%
>   summarize( res = n()) %>%
>   spread( letra, res)
> 
> res_df[is.na(res_df)] <- 0
> res_df
> 
> #-----------------
> 
> 
> Que produce este resultado:
> 
> > res_df
> # A tibble: 3 x 4
> # Groups:   nume [3]
>    nume   `0`     A     B
>   <dbl> <dbl> <dbl> <dbl>
> 1    3.    0.    1.    1.
> 2    4.    1.    0.    0.
> 3    5.    0.    3.    0.
> 
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
> 
> 
> El 9 de marzo de 2018, 16:02, <Guillermo.Vinue en uv.es> escribió:
> 
> > Hola,
> >
> > Estoy intentando averiguar cómo contar el número de categorías situadas
> > después de ciertos valores. Por ejemplo, en el siguiente vector:
> >
> > x <- c(3, "A", "B", 5, "A", 4, 5, "A", "A", 3)
> >
> > el resultado que quisiera obtener es:
> >
> > Valor -> Resultado
> >     3 -> 1 A y 1 B
> >     4 -> 0 A y 0 B
> >     5 -> 3 A y 0 B
> >
> > ¿Alguien tiene alguna sugerencia?.
> >
> > Muchas gracias de antemano.
> >
> > Guillermo
> >
> > _______________________________________________
> > R-help-es mailing list
> > R-help-es en r-project.org
> > https://stat.ethz.ch/mailman/listinfo/r-help-es
> >
> 
> 
> 
> -- 
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
> 



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