Dimitri Liakhovitski
2011-Apr-18 19:19 UTC
[R] using "aggregate" when variable names contain spaces
Hello! my data set has many variables. Unfortuantely, many of those variables contain spaces in their names. I need advice on: how to refer to variable names in the formula for "aggregate". See example below: ### Generating example data set: mydate = rep(seq(as.Date("2008-12-01"), length = 3, by = "month"),4) value1=c(1,10,100,2,20,200,3,30,300,4,40,400) value2=c(1.1,10.1,100.1,2.1,20.1,200.1,3.1,30.1,300.1,4.1,40.1,400.1) example<-data.frame(mydate=mydate,value1=value1,value2=value2) example$group<-c(rep("group1",3),rep("group2",3),rep("group1",3),rep("group2",3)) exampe$group<-as.factor(exampe$group) ### Generating variable names with spaces: names(example)<-c("mydate", "my value 1","my value 2","group") ### Trying to aggregate - but it's not working. Clearly, my reference to variable names is incorrect: mynames<-names(example) example.agg1<-aggregate(cbind(mynames)~group+mydate,sum,data=example) Thank you very much! -- Dimitri Liakhovitski Ninah Consulting www.ninah.com
David Winsemius
2011-Apr-18 19:34 UTC
[R] using "aggregate" when variable names contain spaces
On Apr 18, 2011, at 3:19 PM, Dimitri Liakhovitski wrote:> Hello! > > my data set has many variables. Unfortuantely, many of those variables > contain spaces in their names. > I need advice on: how to refer to variable names in the formula for > "aggregate". See example below: > > ### Generating example data set: > mydate = rep(seq(as.Date("2008-12-01"), length = 3, by = "month"),4) > value1=c(1,10,100,2,20,200,3,30,300,4,40,400) > value2=c(1.1,10.1,100.1,2.1,20.1,200.1,3.1,30.1,300.1,4.1,40.1,400.1) > example<-data.frame(mydate=mydate,value1=value1,value2=value2) > example$group<-c(rep("group1",3),rep("group2",3),rep("group1", > 3),rep("group2",3)) > exampe$group<-as.factor(exampe$group) > > ### Generating variable names with spaces: > names(example)<-c("mydate", "my value 1","my value 2","group") > > ### Trying to aggregate - but it's not working. Clearly, my reference > to variable names is incorrect: > mynames<-names(example) > example.agg1<-aggregate(cbind(mynames)~group+mydate,sum,data=example)Use backticks: > aggregate(`my value 1` + `my value 2` ~group+mydate,sum,data=example) group mydate `my value 1` + `my value 2` 1 group1 2008-12-01 8.2 2 group2 2008-12-01 12.2 3 group1 2009-01-01 80.2 4 group2 2009-01-01 120.2 5 group1 2009-02-01 800.2 6 group2 2009-02-01 1200.2>-- David Winsemius, MD West Hartford, CT
Reasonably Related Threads
- cbind in aggregate formula - based on an existing object (vector)
- merging 2 frames while keeping all the entries from the "reference" frame
- aggregate(as.formula("some formula"), data, function) error when called from in a function
- Extracting year from a date object
- POSIX, time zone and Windows