R 行业分类的勾选测试

R 行业分类的勾选测试,r,if-statement,trading,R,If Statement,Trading,在撰写硕士论文时,我下载了交易数据: >head(Data1) PRICE PREVIOUS 1 100 99 2 98 100 3 100 98 4 100 100 5 100 100 6 101 100 目标是添加一列,指明交易是买方(“买入”)还是卖方(“卖出”)发起的。规则如下: 价格卖出 价格>上一次=>购买 价格==以前的=>以前的分类 应该是这样的 >head(Data1) PRICE PREVI

在撰写硕士论文时,我下载了交易数据:

  >head(Data1)
  PRICE PREVIOUS
1 100   99
2 98    100
3 100   98
4 100   100
5 100   100
6 101   100      
目标是添加一列,指明交易是买方(“买入”)还是卖方(“卖出”)发起的。规则如下:

  • 价格卖出
  • 价格>上一次=>购买
  • 价格==以前的=>以前的分类
应该是这样的

      >head(Data1)
     PRICE PREVIOUS TICK
    1 100   99       Buy
    2 98    100      Sell
    3 100   98       Buy
    4 100   100      Buy
    5 100   100      Buy
    6 101   100      Buy
我编写了以下代码:

Data1$TICK <- ifelse(Data1$PRICE == Data1$PREVIOUS, yes = shift(Data1[ ,3]), no = ifelse(Data1$PRICE>Data1$PREVIOUS, yes= "Buy", no = "Sell"))
Data1$TICK Data1$PREVIOUS,yes=“买入”,no=“卖出”))
但是,当我尝试执行代码时,我得到警告:

[.data.frame
(数据1,3)中出错:`:选择了未定义的列

因此,我有两个问题:

  • 这段代码能提供我想要的结果吗
  • 错误消息指的是什么

  • 这里有一个简单的使用base的方法

    data1 <- data.frame(PRICE = c(100,98,100,100,100,101), PREVIOUS = c(99,100,98,100,100,100))
    
    tk <- c("Sell", NA, "Buy")[sign(data1$PRICE-data1$PREVIOUS)+2]
    for(i in 2:length(tk)) if (is.na(tk[i])) tk[i] <- tk[i-1]
    
    data1$TICK <- tk
    print(data1)
    
    #   PRICE PREVIOUS TICK
    # 1   100       99  Buy
    # 2    98      100 Sell
    # 3   100       98  Buy
    # 4   100      100  Buy
    # 5   100      100  Buy
    # 6   101      100  Buy
    

    data1这里有一个使用base的简单方法

    data1 <- data.frame(PRICE = c(100,98,100,100,100,101), PREVIOUS = c(99,100,98,100,100,100))
    
    tk <- c("Sell", NA, "Buy")[sign(data1$PRICE-data1$PREVIOUS)+2]
    for(i in 2:length(tk)) if (is.na(tk[i])) tk[i] <- tk[i-1]
    
    data1$TICK <- tk
    print(data1)
    
    #   PRICE PREVIOUS TICK
    # 1   100       99  Buy
    # 2    98      100 Sell
    # 3   100       98  Buy
    # 4   100      100  Buy
    # 5   100      100  Buy
    # 6   101      100  Buy
    
    baser中的data1:
    transform(data1,m=ifelse(Reduce)(函数(x,y)ifelse(is.na(y),x,y),`is.nain base R:
    transform(data1,m=ifelse)(Reduce(函数(x,y))ifelse(is.na(y),x,y),`is.na
    
    tk <- c("Sell", "Prior", "Buy")[sign(data1$PRICE-data1$PREVIOUS)+2]
    for(i in 2:length(tk)) if (tk[i] == "Prior") tk[i] <- tk[i-1]