R迭代器/循环(找到动量/方向)

时间:2017-07-24 20:04:32

标签: r loops iterator

查看以下数据框

1 1 3 2 1 6 3 1 7 2 1 6 3 1 7 4 1 8 5 1 13 6 0 10 5 1 13 4 1 12 5 1 13 6 1 14 7 NA NA 8 0 16 7 NA NA 6 NA NA

在左栏中,我有一个小样本。

在中间列上,我有一个测试值:if the number on the left eventually rises by a value of 2 before dropping by a value of 2, the binary value is "1", if the number declines first by 2 before rising 2, the binary is "0"

在第三列,我想要满足标准的位置

2上升到4 ......假人是“1”......最后一栏说“4”在6号位置

在达到8之前,

6下降到4,因此假人为“0”。最后一栏说特定的“4”位于第10位

修改

谢谢Matt

1 个答案:

答案 0 :(得分:0)

这样的事可能适合你。

x <- data.frame(V1 = c(1, 2, 3, 2, 3, 4, 5, 6, 5, 4, 5, 6, 7, 8, 7, 6))


for(i in 1:nrow(x)){
  for(j in i:nrow(x)){
    if(x[j,1] - x[i,1] == 2){
      x[i,2] <- 1
      x[i,3] <- j
      break()
    } else if(x[j,1] - x[i,1] == -2){
      x[i,2] <- 0
      x[i,3] <- j
      break()
    } else{
      x[i,2] <- NA
      x[i,3] <- NA
    }
  }
}