循环并重新开始(在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吗?
- 在第一个信号的行的Up_or_down列中放置-1或+1。
这里是棘手的部分: 然后我需要在接下来的信号(在这种情况下,下一行)开始,并发现如果价格从2日开始行移动$ 1最多或向下。
因此,从第一个信号开始,找出价格是上涨还是下跌,然后从下一个信号再次开始。
答
你为什么不排序信号,然后计算每个信号范围
我很抱歉,你可以粘贴数据,而不是图片,所以我可以在上面
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)
答
我用一个跳过无关信号的索引来解决这个问题。谢谢。
我编辑了原始问题以生成df。非常感谢你的帮助。 – RandyMy