Сложная проблема, которую я хотел бы решить, не используя for()
l oop в R, потому что полный набор данных, который я использую, очень велик, и его выполнение может длиться вечно. Представьте себе следующие данные:
df_z <- data.frame(z_index = c(1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4),
z = c(800, 800, 800, 310, 310, 310, 763, 763, 763, 3621, 3621),
paired_type = c("A", "B", "C", "A", "C", "F", "A", "B", "D", "C", "F"),
paired_amount = c(0, 1768, 3973, 40, 100, 22, 461, 0, 1499, 10817, 0))
Это показывает 4 разных z
суммы (800
, 310
, 763
и 3621
). Для каждого из них у меня есть несколько сумм, каждая из которых имеет paired_type
- A
, B
, C
и др. c. Я бы хотел go через каждую строку, постепенно "расходуя" сумму z
на сокращение парных сумм, пока z_amount
не уменьшится до 0
. Этот процесс должен быть выполнен в следующем порядке: offset_type ie A
, затем B
, затем C
, et c.
Так, например, для z_index
= 2, Я начинаю с z = 310
и хочу "потратить" 40 на paired_type
A
, еще 100
на paired_type
B
и еще 22
на paired_type
C
, оставив меня с 148
в конце.
Это очень легко сделать в электронной таблице:
но как повернуть это в кусок кода R не очевидно для меня ...
Я должен добавить: мне не нужно просто знать величину z впоследствии, мне также нужно знать каждую из парных сумм (ie последний столбец в электронной таблице).
Может кто-нибудь помочь, пожалуйста? Особенно приветствуются решения на основе dplyr
(я говорю dplyr
достаточно хорошо)
Спасибо.