Counting the number of elements with the values of x in a vector

后端 未结 19 1368
闹比i
闹比i 2020-11-22 02:44

I have a vector of numbers:

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

How can I hav

19条回答
  •  误落风尘
    2020-11-22 03:31

    My preferred solution uses rle, which will return a value (the label, x in your example) and a length, which represents how many times that value appeared in sequence.

    By combining rle with sort, you have an extremely fast way to count the number of times any value appeared. This can be helpful with more complex problems.

    Example:

    > 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 ...
    

    If the value you want doesn't show up, or you need to store that value for later, make 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
    

    I find it is rare that I want to know the frequency of one value and not all of the values, and rle seems to be the quickest way to get count and store them all.

提交回复
热议问题