[R] help with the unique function

Marc Schwartz marc_schwartz at comcast.net
Wed May 7 18:45:12 CEST 2008


ravi wrote:
> Hi,
> The unique function is easy to understand and use. Beyond that, I want to get also the frequency of repetition of each individual row in a data frame
> Let me explain with an example :
> x<-data.frame(a=c(1,2,3,1,2),b=c(2,3,4,2,3),c=c(10,20,30,10,20))
> xu<-unique(x)
> We have,
>> x
>   a b  c
> 1 1 2 10
> 2 2 3 20
> 3 3 4 30
> 4 1 2 10
> 5 2 3 20
>> xu
>   a b  c
> 1 1 2 10
> 2 2 3 20
> 3 3 4 30
> 
> I want to get the following data frame :
>   a b  c    Freq
> 1 1 2 10    2
> 2 2 3 20    2
> 3 3 4 30    1
> That is, in addition to the unique rows, I want to get the frequency of repetion of each individual row.
> I will appreciate all the help that I can get.
> Thank You,
> Ravi

As usual in R, there are several options:

 > table(apply(x, 1, paste, collapse = ","))

1,2,10 2,3,20 3,4,30
      2      2      1

or:

 > table(interaction(x, sep = ",", drop = TRUE))

1,2,10 2,3,20 3,4,30
      2      2      1


So:

 > cbind(unique(x),
         Freq = as.vector(table(apply(x, 1, paste, collapse = ","))))
   a b  c Freq
1 1 2 10    2
2 2 3 20    2
3 3 4 30    1

or:

 > cbind(unique(x),
         Freq = as.vector(table(interaction(x, sep = ",", drop = TRUE))))
   a b  c Freq
1 1 2 10    2
2 2 3 20    2
3 3 4 30    1


HTH,

Marc Schwartz



More information about the R-help mailing list