[R] aggregate function
peter dalgaard
pdalgd at gmail.com
Wed Dec 21 22:10:05 CET 2011
On Dec 21, 2011, at 18:22 , Mary Kindall wrote:
> Hi Jim
>
> Thanks for reply but this is not working. I think I am missing something
> over here.
Yes, the data.table() bit. It's not going to work with data frames.
>
> 1> x <- cbind(c(1,2,2,2,3,4), c('a','b', 'c','d','e','f'))
> 1> colnames(x) = c('param', 'case1')
> 1> x = as.data.frame(x)
> 1> x
> param case1
> 1 1 a
> 2 2 b
> 3 2 c
> 4 2 d
> 5 3 e
> 6 4 f
> 1> x[
> 1+ , list(case1 = paste(x$case1, collapse = ','))
> 1+ , by = x$param
> 1+ ]
> Error in `[.data.frame`(x, , list(case1 = paste(x$case1, collapse = ",")),
> :
> unused argument(s) (by = x$param)
>
>
> Hi David.
> Thanks a lot for your help.
>
> 1> aggregate(x$case1, x['param'], FUN = paste, collapse=",")
> param x
> 1 1 a
> 2 2 b,c,d
> 3 3 e
> 4 4 f
> 1>
>
>
> Thanks again
> M
>
>
> On Wed, Dec 21, 2011 at 11:56 AM, David Winsemius <dwinsemius at comcast.net>wrote:
>
>>
>> On Dec 21, 2011, at 11:31 AM, jim holtman wrote:
>>
>> Here is an example using 'data.table'"
>>>
>>> x <- read.table(text = "param case1
>>>>
>>> + 1 a
>>> + 2 b
>>> + 2 c
>>> + 2 d
>>> + 3 e
>>> + 4 f", header = TRUE, as.is = TRUE)
>>>
>>
>> And the aggregate version:
>>
>>> aggregate(x$case1, x["param"], FUN=paste, collapse=",")
>> param x
>> 1 1 a
>> 2 2 b,c,d
>> 3 3 e
>> 4 4 f
>>
>> ( Generally one uses the "[[" function for extraction, but using "["
>> returns a list which is what aggregate is designed to process as its second
>> argument, whereas you would get an error with either of these:
>>
>> aggregate(x$case1, x$param, FUN=paste, collapse=",")
>> aggregate(x$case1, x[["param"]], FUN=paste, collapse=",")
>>
>> )
>>
>> require(data.table)
>>>> x <- data.table(x)
>>>> x[
>>>>
>>> + , list( case1 = paste(case1, collapse = ','))
>>> + , by = param
>>> + ]
>>> param case1
>>> [1,] 1 a
>>> [2,] 2 b,c,d
>>> [3,] 3 e
>>> [4,] 4 f
>>>
>>>>
>>>>
>>>
>>> On Wed, Dec 21, 2011 at 11:26 AM, Mary Kindall <mary.kindall at gmail.com>
>>> wrote:
>>>
>>>> Hi
>>>> I have a data frame with values in following format.
>>>>
>>>>
>>>> param case1
>>>> 1 a
>>>> 2 b
>>>> 2 c
>>>> 2 d
>>>> 3 e
>>>> 4 f
>>>>
>>>>
>>>> how to use aggregate so that it I only one row for each 'param' value.
>>>>
>>>> the output for the above input should be
>>>>
>>>> param case1
>>>> 1 a
>>>> 2 b,c,d
>>>> 3 e
>>>> 4 f
>>>>
>>>> Thanks
>>>> M
>>>>
>>>>
>>>>
>>>> --
>>>> -------------
>>>> Mary Kindall
>>>> Yorktown Heights, NY
>>>> USA
>>>>
>>>> [[alternative HTML version deleted]]
>>>>
>>>> ______________________________**________________
>>>> R-help at r-project.org mailing list
>>>> https://stat.ethz.ch/mailman/**listinfo/r-help<https://stat.ethz.ch/mailman/listinfo/r-help>
>>>> PLEASE do read the posting guide http://www.R-project.org/**
>>>> posting-guide.html <http://www.R-project.org/posting-guide.html>
>>>> and provide commented, minimal, self-contained, reproducible code.
>>>>
>>>
>>>
>>>
>>> --
>>> Jim Holtman
>>> Data Munger Guru
>>>
>>> What is the problem that you are trying to solve?
>>> Tell me what you want to do, not how you want to do it.
>>>
>>> ______________________________**________________
>>> R-help at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/**listinfo/r-help<https://stat.ethz.ch/mailman/listinfo/r-help>
>>> PLEASE do read the posting guide http://www.R-project.org/**
>>> posting-guide.html <http://www.R-project.org/posting-guide.html>
>>> and provide commented, minimal, self-contained, reproducible code.
>>>
>>
>> David Winsemius, MD
>> West Hartford, CT
>>
>>
>
>
> --
> -------------
> Mary Kindall
> Yorktown Heights, NY
> USA
>
> [[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.
--
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Email: pd.mes at cbs.dk Priv: PDalgd at gmail.com
More information about the R-help
mailing list