mardi 5 novembre 2019

Is there an R function to replace nested if.else arguments to pick the maximum value out of multiple values?

Sorry in advance if this is some very beginner question, I'm not that familiar with coding. I'm trying to make it so that strat_returns becomes the highest value between spy_twelve_mon_ret, tbill_tewlve_mon_ret, GLD_twelve_mon_ret, etc, and that strat_label also takes the first couple of letters of said variable. The way my thing is nested right now it doesn't work, as some things can get posted even if they are lower than other values.

 mutate(strat_returns = if_else(lag(spy_twelve_mon_ret) < lag(tbill_twelve_mon_ret),
                                 bond_return,
                                 if_else(lag(spy_twelve_mon_ret) > lag(GLD_twelve_mon_ret), 
                                         spy_return,
                                         if_else(lag(GLD_twelve_mon_ret) > lag(AEM_twelve_mon_ret), 
                                                 GLD_return,
                                                 if_else(lag(AEM_twelve_mon_ret) > lag(NEM_twelve_mon_ret), 
                                                         AEM_return,
                                                         if_else(lag(NEM_twelve_mon_ret) > lag(ABX_twelve_mon_ret), 
                                                                 NEM_return,
                                                                 ABX_return))))),
         strat_label = if_else(lag(spy_twelve_mon_ret) < lag(tbill_twelve_mon_ret),
                               "bond",
                               if_else(lag(spy_twelve_mon_ret) > lag(GLD_twelve_mon_ret), 
                                       "spy",
                                       if_else(lag(GLD_twelve_mon_ret) > lag(AEM_twelve_mon_ret), 
                                               "GLD",
                                               if_else(lag(AEM_twelve_mon_ret) > lag(NEM_twelve_mon_ret), 
                                                       "AEM",
                                                       if_else(lag(NEM_twelve_mon_ret) > lag(ABX_twelve_mon_ret), 
                                                               "NEM",
                                                               "ABX")))))) %>% 

Thank you very much

Aucun commentaire:

Enregistrer un commentaire