Мое предпочтительное решение использует rle
, которое будет возвращать значение (метка, x
в вашем примере) и длину, которая представляет, сколько раз это значение появилось в последовательности.
Комбинируя rle
с sort
, вы получаете чрезвычайно быстрый способ подсчета количества появлений любого значения. Это может быть полезно при более сложных проблемах.
Пример:
> numbers <- c(4,23,4,23,5,43,54,56,657,67,67,435,453,435,324,34,456,56,567,65,34,435)
> a <- rle(sort(numbers))
> a
Run Length Encoding
lengths: int [1:15] 2 1 2 2 1 1 2 1 2 1 ...
values : num [1:15] 4 5 23 34 43 54 56 65 67 324 ...
Если нужное вам значение не отображается или вам нужно сохранить это значение на потом, сделайте a
a data.frame
.
> b <- data.frame(number=a$values, n=a$lengths)
> b
values n
1 4 2
2 5 1
3 23 2
4 34 2
5 43 1
6 54 1
7 56 2
8 65 1
9 67 2
10 324 1
11 435 3
12 453 1
13 456 1
14 567 1
15 657 1
Я нахожу, что редко я хочу знать частоту одного значения, а не все значения, и кажется, что rle - это самый быстрый способ подсчитать и сохранить их все.