[R] how to count unique observations by variables

Chuck Cleland ccleland at optonline.net
Thu Oct 16 10:36:24 CEST 2008


On 10/16/2008 1:27 AM, Lijiang Guo wrote:
> Dear R-helpers,
> 
> I have a data frame with 3 variables, each record is a unique combination of
> the three variables. I would like to count the number of unique values of v3
> in each v1, and save it as a new variable v4 in the same data frame.
> e.g.
> df1
>      [v1] [v2] [v3]
> [1,] "a"  "C"  "1"
> [2,] "b"  "C"  "2"
> [3,] "c"  "B"  "3"
> [4,] "a"  "B"  "3"
> [5,] "b"  "A"  "2"
> [6,] "c"  "A"  "1"
> 
> In this case, the 4th column would become (2, 1, 2, 2, 1, 2).
> 
> Could someone tell me how to do this?

df1 <- data.frame(V1=rep(c('a','b','c'),2),
                  V2=rep(c('C','B','A'),each=2),
                  V3=c(1,2,3,3,2,1))

df1$V4 <- with(df1, ave(V3, V1, FUN = function(x){length(unique(x))}))

df1
  V1 V2 V3 V4
1  a  C  1  2
2  b  C  2  1
3  c  B  3  2
4  a  B  3  2
5  b  A  2  1
6  c  A  1  2

?ave
?unique
?length

> regards,
> Lijiang
> 
> --
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at r-project.org 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. 

-- 
Chuck Cleland, Ph.D.
NDRI, Inc. (www.ndri.org)
71 West 23rd Street, 8th floor
New York, NY 10010
tel: (212) 845-4495 (Tu, Th)
tel: (732) 512-0171 (M, W, F)
fax: (917) 438-0894



More information about the R-help mailing list