简单的解释:,我的目标是找出如何获得下面显示的利润栏。我试图计算每一对变化值(-1到1和1到-1)在val中的差异。
indicator为1或-1,则存储该值。indicator (第3行中的SO-1)。救这个瓦尔。从其中减去第一个值(.85.-.84)。保存在利润栏中。特定于这种情况
备注
我很高兴提供更多的信息,如果需要。
发布于 2016-05-25 06:40:48
在将问题分成两个部分之后,我更容易在头脑中解决这个问题,这两个部分对应于下面所示的两个循环。第一部分涉及标记指示值发生变化的行,而第二部分涉及从相关行(即第1部分中选择的行)中减去val。当然,我想你是想在你的例子中把-.02放在第4行吗?如果没有,那么在计算利润时,请澄清哪些行被减去了哪些行。
data.frame(val=c(.84,.83,.85,.83,.83,.84,.85,.81),
indicator=c(1,0,-1,1,0,1,1,-1)) -> x
x$num <- seq_along(x$val)
x$rollingProf <- NA
# start with indicator = 1
indicator <- 1
value <- .84
for (i in 1:(nrow(x) - 1)) {
x[i + 1, "indicator"] -> next_
if (indicator * -1 == next_) {
1 -> x[i + 1, "rollingProf"]
indicator <- next_
}
}
x[!is.na(x$rollingProf), c("val", "num")] -> q
for (i in 2:nrow(q)) {
q[i, "val"] - q[i - 1, "val"] -> q[i, "change"]
}https://stackoverflow.com/questions/37426214
复制相似问题