Brian,

I'm a bit confused about how the following line works, specifically, what is
happening in freq=length(x)? Is it just taking the length of x after it has
been summarized by different combinations x & y? I guess that must be the
case, because that gives the same result as using freq=length(y)

d1<-ddply(d, .(x, y), summarize, freq=length(x))
d2<-ddply(d, .(x, y), summarize, freq=length(y))

Also, what is the significance of the periods before the second argument in
".(x, y)" ?

Thanks for the help.


On Tue, Jun 21, 2011 at 12:54 PM, Brian Diggs <diggsb@ohsu.edu> wrote:

> On 6/21/2011 11:30 AM, Idris Raja wrote:
>
>> I have a dataframe df with two columns x and y. I want to count the number
>> of times a unique x, y combination occurs.
>>
>> For example
>>
>> x<- c(1,2,3,4,5,1,2,3,4)
>> y<- c(1,2,3,4,5,1,2,4,1)
>>
>> df<-as.data.frame(cbind(x, y))
>>
>> #what is the correct way to use ddply for this example?
>> ddply(df, c('x','y', summarize, ??)
>>
>> #desired output -- format and order doesn't matter
>> # (x, y) count
>> #--------------------
>> # (1, 1) 2
>> # (2, 2) 2
>> # (3, 3) 1
>> # (4, 4) 1
>> # (5, 5) 1
>> # (2, 3) 1
>> # (3, 4) 1
>> # (4, 1) 1
>>
>>        [[alternative HTML version deleted]]
>>
>
> Jorge and Dennis gave good responses that get you to the result you asked
> for, but for completeness I thought I'd include some ddply versions:
>
> ddply(d, .(x, y), summarize, freq=length(x))
>
> This uses the summarize function you were asking about, however you can
> also do it with:
>
> ddply(d, .(x, y), nrow)
>
> or
>
> ddply(d, .(x, y), as.data.frame(nrow))
>
> The latter giving a slightly nicer name (value instead of V1).
>
> As an aside, I prefer using the "summarise" spelling of the function when I
> do use it, because it won't clash with Hmisc::summarize.
>
> ddply(d, .(x, y), summarise, freq=length(x))
>
>
> --
> Brian S. Diggs, PhD
> Senior Research Associate, Department of Surgery
> Oregon Health & Science University
>

	[[alternative HTML version deleted]]

