dplyr solution: bevs %>% group_by(name, sex, drink) %>% summarise(cost = sum(cost)) %>% select(name, drink, cost, sex)
The last select statement puts the output in the column order you wanted in your result. I hope this helps. Brian On Wed, Jul 29, 2015 at 9:37 PM, Jon BR <jonsle...@gmail.com> wrote: > Hello, > I've recently discovered the helpful dplyr package. I'm using the > 'aggregate' function as such: > > > bevs <- data.frame(cbind(name = c("Bill", "Mary"), drink = c("coffee", > "tea", "cocoa", "water"), cost = seq(1:8), sex = c("male","female"))); > bevs$cost <- seq(1:8) > > > bevs > name drink cost sex > 1 Bill coffee 1 male > 2 Mary tea 2 female > 3 Bill cocoa 3 male > 4 Mary water 4 female > 5 Bill coffee 5 male > 6 Mary tea 6 female > 7 Bill cocoa 7 male > 8 Mary water 8 female > > > > > aggregate(cost ~ name + drink, data = bevs, sum) > name drink cost > 1 Bill cocoa 10 > 2 Bill coffee 6 > 3 Mary tea 8 > 4 Mary water 12 > > My issue is that I would like to keep a column for 'sex', for which there > is a 1:1 mapping with 'name', such that every time 'Bill' appears, it is > always 'male'. > > Does anyone know of a way to accomplish this, with or without dplyr? The > ideal command(s) would produce this: > > name drink cost sex > 1 Bill cocoa 10 male > 2 Bill coffee 6 male > 3 Mary tea 8 female > 4 Mary water 12 female > > I would be thankful for any suggestion! > > Thanks, > Jonathan > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.