[RESOLU] Calculer diff en tenant compte d'une autre variable

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Hugues Delmas
Messages : 4
Enregistré le : 10 Mar 2017, 08:47

[RESOLU] Calculer diff en tenant compte d'une autre variable

Messagepar Hugues Delmas » 14 Mar 2017, 14:35

Bonjour,

J'ai enregistré des cordonnées d'un mouvement corporel selon un axe x (x), j'ai plusieurs mesures par participant (a)
Je m'intéresse à la distance du mouvement parcouru par l'indicateur corporel, ainsi pour cela j'ai écrit le code suivant qui me donne bien la distance entre deux positions successives :

Code : Tout sélectionner

abs(diff(df$x))


Mais le code ne prend pas en compte les différents participants et compare donc la dernière ligne du participant 1 avec la première ligne du participant 2, ce qui n'est pas cohérent, il faudrait que diff "recommence" à chaque changement de participant, pour cela j'ai essayé d'agencer le code du dessus dans un boucle for mais je n'y suis pas arrivé...

Merci pour votre aide...

(a) | (x)
1 | 3
1 | 5
1 | 2
1 | -1
1 | -2
2 | 5
2 | -4
2 | 0
2 | 2
2 | 3
3 | 7
3 | 6
3 | 1

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: Calculer diff en tenant compte d'une autre variable

Messagepar Logez Maxime » 14 Mar 2017, 15:28

Bonjour,

une possibilité si tu veux conserver les données dans une nouvelle colonne de ton jeu de données initial :

Code : Tout sélectionner

tab <- structure(list(a = c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3),
    x = c(3L, 5L, 2L, -1L, -2L, 5L, -4L, 0L, 2L, 3L, 7L, 6L,
    1L)), .Names = c("a", "x"), class = "data.frame", row.names = c(NA,
-13L))

fun <- function(x) c(0, abs(diff(x)))
tab <- cbind(tab, res = with(tab, ave(x, a, FUN = fun)))

# si pas besoin de conserver les 0 :
fun <- function(x) abs(diff(x))
with(tab, ave(x, a, FUN = fun))
Cordialement,
Maxime

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: Calculer diff en tenant compte d'une autre variable

Messagepar Serge Rapenne » 14 Mar 2017, 15:34

Bonjour,

une solution avec le package dplyr:

Code : Tout sélectionner

library(dplyr)
tab<-tab%>%group_by(a) %>% mutate(res=abs(lag(x)-x))


Serge

Hugues Delmas
Messages : 4
Enregistré le : 10 Mar 2017, 08:47

Re: [RESOLU] Calculer diff en tenant compte d'une autre variable

Messagepar Hugues Delmas » 15 Mar 2017, 10:44

Merci pour vos réponses,
Tout marche très bien !


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité