循环再次启动(在R中)

时间:2016-09-19 00:10:38

标签: r dataframe

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

我添加了一个日期时间列,可能对排序有帮助。

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

  1. 找到信号的第一个实例(signal == 1)
  2. 从第一个信号的行中取出价格并确定
  3. 价格涨跌幅度至少为1美元?
  4. 在第一个信号行的Up_or_down列中放置一个-1或+1。
  5. 这是棘手的部分: 然后我需要从NEXT信号开始(在这种情况下它是下一行),并查找价格是否从第2个起始行向上或向下移动1美元。

    所以,从第一个信号开始,查看价格是上涨还是下跌,然后在下一个信号再次开始。

    dataframe

2 个答案:

答案 0 :(得分:0)

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

对不起,您可以粘贴数据而不是图片,以便我可以使用它

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)

答案 1 :(得分:0)

我用跳过不相关信号的索引来解决这个问题。感谢。