У меня есть несколько учетных записей, и я пытаюсь рассчитать перемещаемую сумму в 30 дней, депонированную, сгруппированную по счету. я хотел бы сделать 31 итерации этого расчета. Таким образом, для каждой учетной записи будет 31 сумма, представляющая 30-дневный период сумм сумм вклада.R: Циклическая логика для вычисления перемещаемой суммы за 30 дней
Например, первая итерация - это отложения от 10/1 до 10/30, вторая итерация - от 10/2 до 10/31 .... затем, в конце концов, с 11/1 до 11/30.
Моя первая мысль состоит в том, чтобы сделать две петли с расчетами суммы по сумме счетов.
здесь некоторые выборочные данные, два счета, 10 и 11. С депозитных сумм в течение нескольких дней с 1 по 61.
x <- data.frame(day = c(1:61),
account = ifelse(runif(61) <.5, 10, 11),
amount = rnorm(61,mean = 100, sd = 10))
numinterations<-31
numsumdays<-30
monthsums<- for(i in 1:ndays){
for(i in 1:numsumdays){
sum(testloop$daily_total) group by account
}
}
Чувство прекрасное, реальные данные будут полностью заняты. как насчет решения, не использующего dplyr? Я не уверен, как применить эту функцию rollapply к другим функциям группировки. – Rob
Я отредактировал решение, поэтому dplyr больше не требуется. Если вы хотите использовать функции агрегации, которые не являются стандартными, просто напишите свой собственный и укажите его имя для аргумента FUN. До тех пор, пока он принимает вектор значений как свой вход и имеет единственное значение в качестве своего вывода, он должен работать. – mpjdem
Похоже, что сумма идет в обратном направлении, поэтому на выходе 1-го дня текущая сумма для счета 10 должна составлять 117,099, а не 1343. Но я вижу, что на 61-й день складываются правильные суммы, возвращающиеся во времени – Rob