循环并重新开始(在R中)

循环并重新开始(在R中)

问题描述:

start <- as.POSIXct("2016-09-19") 
end <- start + as.difftime(14, units="days") 
datetime <- seq(from=start, to=end, by="days") 
signal <- c(0,0,1,1,0,0,0,0,1,0,1,1,0,0,0) 
price <- c(seq(22.0, 23.4, by=.2), seq(23.4, 22.2, by=-.2)) 
df <- data.frame(datetime, signal,price) 
df$Up_or_down <- 0 

我添加了一个可能有助于排序的日期时间列。循环并重新开始(在R中)

我有一个价格和信号的数据框。我需要:

  1. 找信号的第一个实例(信号== 1)
  2. 从第一信号的行以价格和确定
  3. 没有价格上升或下降至少$ 1吗?
  4. 在第一个信号的行的Up_or_down列中放置-1或+1。

这里是棘手的部分: 然后我需要在接下来的信号(在这种情况下,下一行)开始,并发现如果价格从2日开始行移动$ 1最多或向下。

因此,从第一个信号开始,找出价格是上涨还是下跌,然后从下一个信号再次开始。

dataframe

你为什么不排序信号,然后计算每个信号范围

我很抱歉,你可以粘贴数据,而不是图片,所以我可以在上面

Extract rows for the first occurrence of a variable in a data frame工作

dataset1=NULL 
dataset1$signal=c(0,0,1,1,0,0,0,0,1,0,1,1,0,0,0) 
dataset1$price=c(22.0,22.2,22.4,22.6,22.8,23.0,23.2,23.4,23.4,23.2,23.0,22.8,22.6,22.4,22.2) 
dataset1=data.frame(dataset1) 
dataset1 
dataset1[order(dataset1$signal),] 

library(Hmisc) 
summarize(dataset1$price,dataset1$signal,range) 
+0

我编辑了原始问题以生成df。非常感谢你的帮助。 – RandyMy

我用一个跳过无关信号的索引来解决这个问题。谢谢。