[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