[R-es] Contar categorías después de ciertos valores
Carlos Ortega
cof en qualityexcellence.es
Vie Mar 9 21:43:59 CET 2018
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
[[alternative HTML version deleted]]
Más información sobre la lista de distribución R-help-es