[R] plyr and table question

baptiste auguie ba208 at exeter.ac.uk
Fri Apr 3 15:43:06 CEST 2009


That makes sense, so I can do something like,

count <- function(x){
	as.integer(unclass(table(x)))
}

count(d$user_id)

ddply(d, .(user_id), transform, count = count(user_id))

>   user_id  website time count
> 1      20   google  930     2
> 2      20 facebook 1000     2
> 3      21    yahoo  935     1
> 4      25 facebook 1015     1
> 5      61   google  940     1

Have I missed a built-in function to obtain this result?

Thanks,

baptiste

On 3 Apr 2009, at 14:16, hadley wickham wrote:

> On Fri, Apr 3, 2009 at 4:43 AM, baptiste auguie <ba208 at exeter.ac.uk>  
> wrote:
>> Dear all,
>>
>> I'm puzzled by the following example inspired by a recent question on
>> R-help,
>>
>>
>> cc <- textConnection("user_id  website          time
>> 20        google            0930
>> 21        yahoo            0935
>> 20        facebook        1000
>> 25        facebook        1015
>> 61        google            0940")
>>
>> d <- read.table(cc, head=T) ; close(cc)
>>
>> table(d$user_id) # count the occurrences
>>
>> # now I'd like to include these results in the original data.frame,
>>
>> ddply(d, .(website), transform, count = table(user_id)) # why two new
>> columns?
>
> Because ddply expects a data frame as output from your aggregation
> function.  When the output isn't a data frame, it calls as.data.frame,
> which in this case produces a data frame with two columns.
>
> Hadley
>
> -- 
> http://had.co.nz/

_____________________________

Baptiste Auguié

School of Physics
University of Exeter
Stocker Road,
Exeter, Devon,
EX4 4QL, UK

Phone: +44 1392 264187

http://newton.ex.ac.uk/research/emag




More information about the R-help mailing list