【问题标题】:Loop for subsetting data.frame用于子集 data.frame 的循环
【发布时间】:2014-07-28 21:53:04
【问题描述】:

我使用神经网络包来预测股票的价值(文凭论文)。示例数据如下

predict<-runif(23,min=0,max=1)
day<-c(369:391)
ChoosedN<-c(2,5,5,5,5,5,4,3,5,5,5,2,1,1,5,5,4,3,2,3,4,3,2)
Profit<-runif(23,min=-2,max=5)
df<-data.frame(predict,day,ChoosedN,Profit)
colnames(df)<-c('predict','day','ChoosedN','Profit')

但我并不总是在同一时期进行投资 (ChoodedN)。为了回测神经站点,即使神经站点说“购买”(即预测> 0.5),我也必须跳过我仍然在位的日子。框架是这样的

        predict day ChoosedN        Profit
1  0.6762981061 369        2 -1.6288823350
2  0.0195611224 370        5  1.5682195597
3  0.2442795106 371        5  0.6195915225
4  0.9587601107 372        5 -1.9701975542
5  0.7415729680 373        5  3.7826137026
6  0.4814927997 374        5  4.1228808255
7  0.1340754859 375        4  3.7818792837
8  0.6316874851 376        3  0.7670884461
9  0.1107241728 377        5 -1.3367400097
10 0.5850426450 378        5  2.2848396166
11 0.2809308425 379        5  2.5234691438
12 0.2835292015 380        2 -0.3291319925
13 0.3328713216 381        1  4.7425349397
14 0.4766904986 382        1 -0.4062103292
15 0.5005860797 383        5  4.8612083721
16 0.2734292494 384        5 -0.2320077328
17 0.1488479455 385        4  2.6195679584
18 0.9446908936 386        3  0.4889716264
19 0.8222738281 387        2  0.7362413658
20 0.7570014759 388        3  4.6661250258
21 0.9988698252 389        4  2.6340743946
22 0.8384663551 390        3  1.0428046484
23 0.1938821415 391        2  0.8855748393

并且我需要以这种方式创建新的data.frame。例如:如果预测(第一行)> 0.5,则删除第二行和第三行(因为第一行中的ChoosedN是2所以第一行之后的下两个必须是删除,因为我们还在那里)。并以相同的方式继续第四行(如果预测(第四行)> 0.5,则删除接下来的五行,依此类推。当然,如果预测

【问题讨论】:

    标签: r loops for-loop


    【解决方案1】:

    我会创建一个新的数据框,然后在 for 循环中使用 rbind 绑定您想要的行

    newDF <- data.frame()                # New, Empty Dataframe
    i = 1                                # Loop index Variable
    
    while (i < nrow(df)) {
      if (df$predict[i] > 0.5) {         # If predict > 0.5,
        newDF <- rbind(newDF, df[i,])    # Bind the row
        i = i + df$ChoosedN[i]           # Adjust for ChoosedN rows
      }
      i = i + 1                          # Move to the next row
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-25
      • 2015-02-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多