我有一个包含一百万行和多列的数据框。
我需要在前三列(月,产品,费率)上进行分组,然后在新的第四列上进行归纳总结:在当前行中添加一个值,在前一行中添加一个值月(可以是前一个月,但由于需要进行多个分组,因此我无法确认。
我已经尝试过:
Bdtest<- BDdata %>%
group_by(Month, PROD, Currency) %>%
arrange(Month) %>%
summarise(Value = Amount, lag(Amount2, default = 0))
但是我仍然没有得到想要的结果。
最后,我想要这样的结果:
Month Prod Currency Value
1 Fix USD value = amount of this period + amount from previous period
1 Var USD x2
也许一个好的解决方案是用两个单独的表进行联接,这样我就可以联接求和,但是我可以在同一动作中进行分组依据吗?
编辑:
glimpse(bd5)
Observations: 1,843,645
Variables: 65
$ Rate <chr> "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", ...
$ Currency <chr> "998", "998", "998", "998", "998", "998", "998", "998", "998", "998", ...
$ Flow_Type <chr> "2", "2", "2", "2", "2", "2", "2", "2", "2", "2", "2", "2", "2", "2", ...
$ BANDA_TEMP <chr> "01", "02", "02", "03", "03", "03", "04", "04", "05", "05", "05", "01"...
$ PeriodoLow <fct> 1M, 1M, 2M, 3M, 3M, 3M, 6M, 6M, 9M, 9M, 9M, 1M, 1M, 2M, 3M, 3M, 3M, 6M...
$ PeriodoHigh <fct> 2M, 2M, 3M, 6M, 6M, 6M, 9M, 9M, 1Y, 1Y, 1Y, 2M, 2M, 3M, 6M, 6M, 6M, 9M...
$ DaysProp_CapHigh <dbl> 329751.000, 5514.083, 0.000, 229447.533, 115113.678, 3725.489, 224284....
$ DaysProp_CapLow <dbl> 0.000, 325330.917, 331938.000, 103621.467, 219087.322, 331568.511, 112...
按照您的要求,我在这里放置了有关问题的更多数据。因此,我有一个巨大的Df,需要在其中按前四个变量+句点创建最终分组。
然后最终求和以获得Cap,该Cap将是:上个月(或年份)的“ DaysProp_CapLow” +“ DaysProp_CapHigh”的当前值。
第一个月就是:DaysProp_CapLow
但是从第二个月开始将是:DaysProp_CapLow + DaysProp_CapHigh(从第一个月开始)
我一直在尝试滞后,但在将其与分组依据和总结相结合时遇到了问题
任何帮助将不胜感激。我正在尝试这样做,现在加入表。
答案 0 :(得分:2)
我不能确定,但是根据您的描述,我认为这应该可行:
Bdtest <- BDdata %>%
group_by(Month, PROD, Currency) %>%
arrange(Month) %>%
mutate(Value = Amount + lag(Amount2, default = 0))