On 7/22/2010 5:01 AM, Allan Engelhardt wrote:
There are so many ways....  Here is one:

aggregate(v ~ u, data=X, function(...) length(unique(...)))
# u v
# 1 T1 2
# 2 T2 1

Hope this helps

Here is one other way, using the plyr package (which is very good for taking a data structure (data.frame, list, array), pulling it apart by some criteria, doing something on each of the parts, and putting the results back together):

library("plyr")
ddply(X, .(u), function(x) {length(unique(x$v))})
#   u V1
#1 T1  2
#2 T2  1


Allan.

On 22/07/10 12:52, Gildas Mazo wrote:
Dear R users,

I want to aggregate data in the following way:

###

X<- data.frame(u = c("T1","T1","T1","T2"), v=c("a","a","b","a"))
X
library(sqldf)
sqlOut<- sqldf("select count(distinct(v)) from X group by u")
sqlOut

###

Now I want to get the same result without using SQL. How can I achieve
that ?

Thanks for your help,

Gildas

______________________________________________
R-help@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.




--
--
Brian Diggs
Senior Research Associate, Department of Surgery, Oregon Health & Science University

______________________________________________
R-help@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.

Reply via email to