【发布时间】:2019-05-21 14:12:17
【问题描述】:
我有一个数据框,它有 2 列:日期和返回。现在我想改变多个新列,这取决于两个参数:阈值参数和滞后参数。功能很简单。新列计算如下:
var= ifelse(lag(return, n= lag_day)>threshold,return, NA))
如果lag(return) 高于阈值,则给我return-值,否则给我NA。
以下是阈值和 lag_days 的值:
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))
但是有没有一种解决方案可以让它变得更容易?也许有一两个应用函数?
这是我的示例数据框:
df <- tibble(
date= today()+0:12,
return=c(1,2.5,2,3,5,6.5,1,9,3,2,4,7,2)
)
【问题讨论】:
标签: r