У меня есть датафрейм, который имеет 2 столбца: дата и возврат.Теперь я хочу изменить несколько новых столбцов, которые зависят от двух параметров: порогового параметра и параметра задержки.Функциональность проста.Новый столбец рассчитывается следующим образом:
var= ifelse(lag(return, n= lag_day)>threshold,return, NA))
Если lag(return)
выше порогового значения, чем дать мне значение return
, в противном случае укажите NA
.
Вот значения пороговых значений и дней лагов:
threshold=c(2,4,6)
lag_day=c(1,2,3)
Здесь я решаю свою проблему вручную:
test<-df%>%
mutate(var_t1_lag1= ifelse(lag(return, n= lag_day[1] )>threshold[1],return, NA))%>%
mutate(var_t2_lag1= ifelse(lag(return, n= lag_day[1] )>threshold[2],return, NA))%>%
mutate(var_t3_lag1= ifelse(lag(return, n= lag_day[1] )>threshold[3],return, NA))%>%
mutate(var_t1_lag2= ifelse(lag(return, n= lag_day[2] )>threshold[1],return, NA))%>%
mutate(var_t2_lag2= ifelse(lag(return, n= lag_day[2] )>threshold[2],return, NA))%>%
mutate(var_t3_lag2= ifelse(lag(return, n= lag_day[2] )>threshold[3],return, NA))%>%
mutate(var_t1_lag3= ifelse(lag(return, n= lag_day[3] )>threshold[1],return, NA))%>%
mutate(var_t2_lag3= ifelse(lag(return, n= lag_day[3] )>threshold[2],return, NA))%>%
mutate(var_t3_lag3= ifelse(lag(return, n= lag_day[3] )>threshold[3],return, NA))
Но есть ли решение, которое облегчит эту задачу?Может быть, с одной или двумя функциями apply?
Вот мой пример dataframe:
df <- tibble(
date= today()+0:12,
return=c(1,2.5,2,3,5,6.5,1,9,3,2,4,7,2)
)