Contar el número de elementos con los valores de x en un vector

Resuelto RQuestions asked hace 54 años • 21 respuestas

Tengo un vector de números:

numbers <- c(4,23,4,23,5,43,54,56,657,67,67,435,
         453,435,324,34,456,56,567,65,34,435)

¿Cómo puedo hacer que R cuente el número de veces que aparece un valor x en el vector?

RQuestions avatar Jan 01 '70 08:01 RQuestions
Aceptado

Puedes usar simplemente table():

> a <- table(numbers)
> a
numbers
  4   5  23  34  43  54  56  65  67 324 435 453 456 567 657 
  2   1   2   2   1   1   2   1   2   1   3   1   1   1   1 

Entonces puedes subconjuntoarlo:

> a[names(a)==435]
435 
  3

O conviértalo en un data.frame si se siente más cómodo trabajando con eso:

> as.data.frame(table(numbers))
   numbers Freq
1        4    2
2        5    1
3       23    2
4       34    2
...
Shane avatar Dec 17 '2009 17:12 Shane

La forma más directa es sum(numbers == x).

numbers == xcrea un vector lógico que es VERDADERO en cada ubicación en la que ocurre x, y cuando suming, el vector lógico se convierte en numérico, lo que convierte VERDADERO en 1 y FALSO en 0.

Sin embargo, tenga en cuenta que para números de coma flotante es mejor usar algo como: sum(abs(numbers - x) < 1e-6).

hadley avatar Dec 17 '2009 18:12 hadley

Probablemente haría algo como esto

length(which(numbers==x))

Pero realmente, una mejor manera es

table(numbers)
Jesse avatar Dec 17 '2009 17:12 Jesse

También lo hay count(numbers)del plyrpaquete. Mucho más conveniente que tableen mi opinión.

geotheory avatar Jun 06 '2013 14:06 geotheory