[R] count the # of appearances...
Stephen Tucker
brown_emu at yahoo.com
Thu Mar 1 20:55:08 CET 2007
You can split() the original vector according to its elements into a list,
then use lapply() to count the lengths of the list:
> x <- round(runif(100,1,10))
> unlist(lapply(split(x,f=x),length))
1 2 3 4 5 6 7 8 9 10
5 14 9 13 11 8 8 14 12 6
This can be useful if you want to use some criteria for counting, and then
you can replace length() with your own function.
Best regards,
ST
--- ted.harding at nessie.mcc.ac.uk wrote:
> On 01-Mar-07 bunny , lautloscrew.com wrote:
> > Hi there,
> >
> > is there a possibility to count the number of appearances of an
> > element in a vector ?
> > i mean of any given element.. deliver all elements which are exactly
> > xtimes in this vector ?
> >
> > thx in advance !!
>
> If it is a specific element value which you designate beforehand,
> then Ranjan Maitra's method
>
> sum(your vector == your chosen element)
>
> will of course give you the number of times this occurs.
>
> However, your query suggests this may not be what you want.
>
> First, if you do not designate a specific element, then table()
> can give you counts of repetitions of all the distinct elements.
> For example:
>
> ## Generate the vector y with repetitions of elements of x:
> > x<-round(runif(10),digits=3)
> > y<-sample(x,25,replace=TRUE)
>
> ## Count the numbers of repetitions
> > x<-round(runif(10),digits=3)
> > y<-sample(x,25,replace=TRUE)
> > table(y)
> ## y
> ## 0.122 0.372 0.431 0.486 0.523 0.858 0.886 0.948
> ## 5 4 5 3 3 2 2 1
>
> Second: You ask for a method to "deliver all elements which are
> exactly xtimes in this vector". So suppose "xtimes" is a given
> number of times, and you want to know all elements which each
> occur xtimes times in the vector y.
>
> You could base a method for this on the ouput of table()
> as above (look at "?table" for the background).
>
> counts <- as.data.frame(table(y))
> counts
> ## y Freq
> ## 1 0.122 5
> ## 2 0.372 4
> ## 3 0.431 5
> ## 4 0.486 3
> ## 5 0.523 3
> ## 6 0.858 2
> ## 7 0.886 2
> ## 8 0.948 1
>
> so, if your "xtimes" is say 3, then
>
> counts$y[counts$Freq==3]
> ## [1] 0.486 0.523
> ## Levels: 0.122 0.372 0.431 0.486 0.523 0.858 0.886 0.948
>
> showing that elements "0.486" and "0.523" occurred 3 times each
> in the vector y.
>
> Hoping this helps,
> Ted.
>
> --------------------------------------------------------------------
> E-Mail: (Ted Harding) <ted.harding at nessie.mcc.ac.uk>
> Fax-to-email: +44 (0)870 094 0861
> Date: 01-Mar-07 Time: 15:11:09
> ------------------------------ XFMail ------------------------------
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
More information about the R-help
mailing list