У меня есть тиббл (см. Ниже), который включает двенадцатимесячный доход по многочисленным акциям (SPY, GLD и т. Д.), А также доход в ряду рядом с двенадцатью месяцами. Я хочу взять максимальное значение между различными двенадцатью месяцами из строки (t-1), а затем для акции с этим значением опубликовать ее возврат в отдельном столбце с именем "Strat return" в строке (t), а затем опубликоватьимя акции в другом столбце, а также имя «Strat ticker» в строке (t).
Я попытался запустить аргументы if_else и case_when. Когда я попытался сделать это, у меня были проблемы с поиском максимального значения, в котором тиббл оказался пустым. Кроме того, я не знаю способа сделать его масштабируемым, чтобы включить множество различных акций, если я хочу добавить некоторые. Я также использую задержку (SPY_twelve_mon_ret), чтобы найти строки (t-1), и это хорошо работает.
# Input
# A tibble: 6 x 8
# Groups: mom_asset [1]
mom_asset date spy_return spy_twelve_mon tbill_twelve_mon GLD_return GLD_twelve_mon bond_return
<chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 SPY 2005-11-30 0.0440 0.0819 0.0826 0.0582 0.0882 0.00374
2 SPY 2005-12-31 -0.00190 0.0483 0.0861 0.0505 0.178 0.0114
3 SPY 2006-01-31 0.0240 0.0981 0.0308 0.0993 0.343 -0.000596
4 SPY 2006-02-28 0.00573 0.0817 0.0580 -0.0111 0.288 0.00161
5 SPY 2006-03-31 0.0165 0.120 0.0140 0.0362 0.357 -0.00868
6 SPY 2006-04-30 0.0126 0.156 -0.0507 0.120 0.501 -0.00149
# Output
# A tibble: 6 x 8
# Groups: mom_asset [1]
mom_asset date spy_return spy_twelve_mon_ret tbill_twelve_mon_ret GLD_return GLD_twelve_mon_ret bond_return strat_returns strat_label
<chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr>
2 SPY 2005-12-31 -0.00190 0.0483 0.0861 0.0505 0.178 0.0114 0.0114 BOND
3 SPY 2006-01-31 0.0240 0.0981 0.0308 0.0993 0.343 -0.000596 -0.000596 BOND
4 SPY 2006-02-28 0.00573 0.0817 0.0580 -0.0111 0.288 0.00161 0.00161 BOND
5 SPY 2006-03-31 0.0165 0.120 0.0140 0.0362 0.357 -0.00868 -0.00868 BOND
6 SPY 2006-04-30 0.0126 0.156 -0.0507 0.120 0.501 -0.00149 -0.00149 BOND