根据另一个数据帧col创建一列

时间:2018-02-20 09:11:33

标签: r dataframe

我有一个具有以下结构的数据框,名为" 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  ))

2 个答案:

答案 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))