2017-07-24 2 views
0

Regardez la trame de données suivanteR itérateurs/boucles (recherche dynamique/direction)

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

Sur la colonne de gauche j'ai un petit échantillon.

Sur la colonne centrale i ont une valeur de test: 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"

Sur la troisième colonne, je veux la position où les critères a été atteint

2 monte à 4 ... le mannequin est « 1 » ... la dernière colonne indique que "4" était sur la position 6

6 diminue à 4 avant d'atteindre 8, donc le mannequin est "0". La dernière colonne indique que "4" spécifique était sur la position 10

Edit:

Merci Matt

Répondre

0

Quelque chose comme cela peut travailler pour vous.

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 
    } 
    } 
}