我有一个具有以下结构的数据框,名为" df"
Date Pxlast RSI
1-1-2006 403.4 103.4
2-1-2006 403.2 48.2
3-1-2006 394.2 492.2
.
.
.
我必须创建一个新的数据框,前两列将是相同的,这是代码。
senialesActivo = as.data.frame(df[,1:2])
names(senialesActivo)[1:2] = names(df)[1:2]
然后我必须在senialesActivo上创建第三列,这取决于是否在" df"专栏" RSI"超过50我必须分配1或0。
这是" senialesActivo"的输出示例。数据帧:
Date Pxlast Signal_RSI
1-1-2006 403.4 1
2-1-2006 403.2 0
3-1-2006 394.2 1
正如你在" df"数据帧为日期1-1-2006我们的RSI值为103.4,所以对于我的新senialesActivo Dataframe我必须创建一个新的col,在那个日期我必须给1,如果值大于50或0如果& #39; s小于该值。
以下是我必须做的事情的想法,但这不起作用。
apply(df[,3],2, ifelse(df[,3] < umbral_RSI, senialesActivo[3] == 0 , senialesActivo[3] == 1 ))
答案 0 :(得分:1)
试试这个:
senialesActivo$Signal_RSI <- ifelse(df$RSI > 50, 1, 0)
senialesActivo
Date Pxlast Signal_RSI
1 1-1-2006 403.4 1
2 2-1-2006 403.2 0
3 3-1-2006 394.2 1
答案 1 :(得分:0)
我们可以在没有任何ifelse
senialesActivo$Signal_RSI <- with(senialesActivo, as.integer( RSI > 50))