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

2018-03-12 Por tema Guillermo.Vinue
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

2018-03-09 Por tema Carlos Ortega
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

2018-03-09 Por tema Javier Marcuzzi
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

2018-03-09 Por tema Guillermo.Vinue
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