[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