[R] split apply on multiple variables

Naresh Gurbuxani n@re@h_gurbux@n| @end|ng |rom hotm@||@com
Fri Jul 1 13:19:18 CEST 2022


I have solved this problem. 

ddply(mydf, c("date", "account"), function(df) {
profit = sum(profit); 
sales = sum(sales); 
data.frame(profit = profit, sales = sales)}) 


From: R-help <r-help-bounces using r-project.org> on behalf of Naresh Gurbuxani <naresh_gurbuxani using hotmail.com>
Sent: Friday, July 1, 2022 7:07 AM
To: r-help using r-project.org <r-help using R-project.org>
Subject: [R] split apply on multiple variables 
 

I am looking for a more general solution to below exercise.

Thanks,
Naresh

library(plyr)
mydf <- data.frame(
date = rep(seq.Date(from = as.Date("2022-06-01"), by = 1, length.out =
10), 4),
account = c(rep("ABC", 20), rep("XYZ", 20)),
client = c(rep("P", 10), rep("Q", 10), rep("R", 10), rep("S", 10)),
profit = round(runif(40, 2, 5), 2), sales = round(runif(40, 10, 20), 2))

mydf.split <- split(mydf, mydf$account)

# if there are 10 variables like sales, profit, etc., need 10 lines
myres <- lapply(mydf.split, function(df) {
sales.ts <- aggregate(sales ~ date, FUN = sum, data = df) #one step for both?
profit.ts <- aggregate(profit ~ date, FUN = sum, data = df)
merge(profit.ts, sales.ts, by = "date")})

myres.df <- ldply(myres)

______________________________________________
R-help using 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.


More information about the R-help mailing list