You were using the wrong syntax; it should be: x[ , list(case1 = paste(case1, collapse = ',')) , by = param ]
Notice that you do not use the "x$" on the names within the data.table statement. On Wed, Dec 21, 2011 at 12:22 PM, Mary Kindall <mary.kind...@gmail.com> wrote: > Hi Jim > > Thanks for reply but this is not working. I think I am missing something > over here. > > 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 <dwinsem...@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.kind...@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@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. >>> >>> >>> >>> >>> -- >>> 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@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. >> >> >> David Winsemius, MD >> West Hartford, CT >> > > > > -- > ------------- > Mary Kindall > Yorktown Heights, NY > USA > -- 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@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.