Re: [R-es] Contar categorías después de ciertos valores
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 > > 13.0.1.1. > 24.1.0.0. > 35.0.3.0. > > Saludos, > Carlos Ortega > www.qualityexcellence.es > > > El 9 de marzo de 2018, 16:02,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@r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > > > > > -- > Saludos, > Carlos Ortega > www.qualityexcellence.es > ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Contar categorías después de ciertos valores
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 13.0.1.1. 24.1.0.0. 35.0.3.0. Saludos, Carlos Ortega www.qualityexcellence.es El 9 de marzo de 2018, 16:02,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@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > -- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]] ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Contar categorías después de ciertos valores
Estimado Guillermo Vinue Es relativamente simple pero se complica. Simple porque puede recorrer todos los elementos del vector y al encontrar un número cortar el vector en esa posición, pero se complica porque en su ejemplo hay dos números 5. Para buscar la posición: puede usar match(c(3,4,5),datos) entre otras posibilidades. Para cortar en la posición encontrada https://www.rdocumentation.org/packages/base/versions/3.4.3/topics/cut Luego de encontrar el número, a partir de este la posición para cortar, hay que organizar un poco para trabajar con varios fragmentos (vectores), pero tenga en cuenta que en su ejemplo no hay un orden, no sería problema, en todos casos tienen varios fragmentos que comienzan con el mismo número. Javier Rubén Marcuzzi El 9 de marzo de 2018, 12:02,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@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > [[alternative HTML version deleted]] ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
[R-es] Contar categorías después de ciertos valores
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@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es