IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

Identification de courses


Sujet :

R

  1. #1
    Futur Membre du Club
    Homme Profil pro
    analyste sport
    Inscrit en
    Avril 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : analyste sport
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2020
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Identification de courses
    Bonjour à tous,

    Je continue mon apprentissage pas à pas de R. Je suis dans l'apprentissage et la, ça fait bientôt 15 jours que je bug. Voila je m'explique et j’espère que vous pourrez m'aider.

    Je reçois les données GPS de mes joueurs de foot dans le tableau ci dessus.


    Nom : coe.PNG
Affichages : 188
Taille : 70,2 Ko


    Je voudrais trouver la formule afin que R identifie chaque course faite par mon joueur et qu'il comptabilise le nombre de courses. Par exemple pour la premiere course elle commence 123229500 et se termine à 123229900.

    De plus je voudrais les situer sur un terrain et j'ai besoin d'utiliser le point de départ(RyanX) et le point d'arrivée(RyanY).

    Ca serait vraiment genial que quelqu'un puisse me donner un coup de main.

    Merci merci par avance

    Zuhgoh

  2. #2
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Identification de courses
    Bonjour,

    Une proposition pas à pas en considérant que vous souhaitez produire un tableau avec une ligne par jour (vous pourrez adapter pour générer une ligne par joueur si votre fichier contient les données de plusieurs joueurs) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    coe <- read.csv("d:/temp/coe.txt")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    > coe
           time         C    RyanX    RyanY    RyanV      RyanD
    1  20200201 123229500 88.58653 46.02861 22.16808 0.00061578
    2  20200201 123229600 89.21901 45.97438 22.35708 0.00062103
    3  20200201 123229700 89.75071 45.83240 22.55760 0.00062660
    4  20200201 123229800 90.31635 45.75555 22.54932 0.00062637
    5  20200201 123229900 90.81491 45.80162 22.15764 0.00061549
    6  20200201 123325000 59.89717 33.29449 22.19508 0.00061653
    7  20200201 123325100 60.48614 32.91515 22.60512 0.00062792
    8  20200201 123325200 60.97782 32.47990 23.12928 0.00064248
    9  20200201 123325300 61.48175 32.08328 23.32584 0.00064794
    10 20200202 123229600 89.21901 45.97438 22.35708 0.00062103
    11 20200202 123229700 89.75071 45.83240 22.55760 0.00062660
    12 20200202 123229800 90.31635 45.75555 22.54932 0.00062637
    13 20200202 123229900 90.81491 45.80162 22.15764 0.00061549
    14 20200202 123325000 59.89717 33.29449 22.19508 0.00061653
    15 20200202 123325100 60.48614 32.91515 22.60512 0.00062792
    16 20200202 123325200 60.97782 32.47990 23.12928 0.00064248
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C_n <- setNames(as.data.frame(table(coe$time)),c("time","C_n"))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    > C_n
          time C_n
    1 20200201   9
    2 20200202   7
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    C_min <- aggregate(C ~ time, coe, min)
    C_min <- merge(C_min, 
                   coe[,c("time","C","RyanX","RyanY")], 
                   by=c("time","C"))
    names(C_min) <- c("time","C_min","RyanX_min","RyanY_min")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    > C_min
          time     C_min RyanX_min RyanY_min
    1 20200201 123229500  88.58653  46.02861
    2 20200202 123229600  89.21901  45.97438
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    C_max <- aggregate(C ~ time, coe, max)
    C_max <- merge(C_max, 
                        coe[,c("time","C","RyanX","RyanY")], 
                        by=c("time","C"))
    names(C_max) <- c("time","C_max","RyanX_max","RyanY_max")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    > C_max
          time     C_max RyanX_max RyanY_max
    1 20200201 123325300  61.48175  32.08328
    2 20200202 123325200  60.97782  32.47990
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    resume <- merge(C_n, C_min, by="time")
    resume <- merge(resume, C_max, by="time")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    > resume
          time C_n     C_min RyanX_min RyanY_min     C_max RyanX_max RyanY_max
    1 20200201   9 123229500  88.58653  46.02861 123325300  61.48175  32.08328
    2 20200202   7 123229600  89.21901  45.97438 123325200  60.97782  32.47990
    Cordialement,
    Fichiers attachés Fichiers attachés
    • Type de fichier : txt coe.txt (962 octets, 24 affichages)

  3. #3
    Futur Membre du Club
    Homme Profil pro
    analyste sport
    Inscrit en
    Avril 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : analyste sport
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2020
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup, beaucoup... je vais essayer ce weekend... et je n'oublierai pas de marquer resolu

    Merci encore

    BOnne journee

  4. #4
    Futur Membre du Club
    Homme Profil pro
    analyste sport
    Inscrit en
    Avril 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : analyste sport
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2020
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Re Bonjour

    Je crois qu'on y est presque. Pour la fin, j'ai compris pour le min et le max. Par contre pour le début, je me suis mal exprime.
    LA colonne time[Iso, ne m’intéresse pas car elle nous donne la date et elle sera la même pour toutes les données (375 lignes). La ou j'ai du mal et que je ne vois pas comment faire, c'est comment ma formule va comptabiliser les courses.

    Par exemple sur la capture d écran ci dessous, on peut voir que :
    la première course commence à 12h32min29sec500 et se termine à 12h32min29sec900
    la deuxième course commence à 12h33min25sec000 et se termine à 12h33min25sec400

    Avez vous une idée pour qu'on puisse les comptabiliser ?

    Dans l’idée, je souhaiterai un tableau de la sorte

    Nomdu joueur Course debut fin X_depart Y_depart X_fin Y_fin
    RYAN 1 123229500 123229900 88.58 46.02 90.81 45.80
    RYAN 2 123325000 123325400 59.89 33.29 61.95 31.60
    ...


    Nom : Capture.PNG
Affichages : 137
Taille : 90,5 Ko

  5. #5
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut previous
    Bonjour,

    Je n'avais en effet pas compris votre demande. Plutôt que comptabiliser, je pense que vous souhaitez numéroter les courses.

    Plusieurs propositions avec le même algorithme :

    • Avec les fonctions de base ave() et diff()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    coe <- read.csv("d:/temp/coe.txt")
    coe$diff_C <- ave(coe$C, FUN=function(x) c(NA,diff(x)))
    coe$course <- ifelse(coe$diff_C != 100 | is.na(coe$diff_C), 1, 0)
    coe$course[coe$course == 1] <- 1:sum(coe$course)
    while(min(coe$course)==0){
      coe$diff_course <- ave(coe$course, FUN=function(x) c(NA,-diff(x)))
      coe$course <- ifelse(coe$course == 0, coe$diff_course, coe$course)
    }
    coe$diff_course <- NULL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    > coe
          time         C    RyanX    RyanY    RyanV      RyanD diff_C course
    1 20200201 123229500 88.58653 46.02861 22.16808 0.00061578     NA      1
    2 20200201 123229600 89.21901 45.97438 22.35708 0.00062103    100      1
    3 20200201 123229700 89.75071 45.83240 22.55760 0.00062660    100      1
    4 20200201 123229800 90.31635 45.75555 22.54932 0.00062637    100      1
    5 20200201 123229900 90.81491 45.80162 22.15764 0.00061549    100      1
    6 20200201 123325000 59.89717 33.29449 22.19508 0.00061653  95100      2
    7 20200201 123325100 60.48614 32.91515 22.60512 0.00062792    100      2
    8 20200201 123325200 60.97782 32.47990 23.12928 0.00064248    100      2
    9 20200201 123325300 61.48175 32.08328 23.32584 0.00064794    100      2
    • Avec la fonction shift() du package data.table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    coe <- read.csv("d:/temp/coe.txt")
    library(data.table)
    setDT(coe)
    coe[, diff_C := C - shift(C)]
    coe$course <- ifelse(coe$diff_C != 100 | is.na(coe$diff_C), 1, 0)
    coe$course[coe$course == 1] <- 1:sum(coe$course)
    while(min(coe$course)==0) coe[, course := ifelse(course==0, shift(course), course)]
    setDF(coe)
    • Avec la fonction lag() du package dplyr

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    coe <- read.csv("d:/temp/coe.txt")
    library(dplyr)
    coe <- mutate(coe, diff_C = C - lag(C))
    coe$course <- ifelse(coe$diff_C != 100 | is.na(coe$diff_C), 1, 0)
    coe$course[coe$course == 1] <- 1:sum(coe$course)
    while(min(coe$course)==0) coe <- mutate(coe, course = ifelse(course==0, lag(course), course))
    Liens utiles :



    Cordialement,
    Fichiers attachés Fichiers attachés
    • Type de fichier : txt coe.txt (556 octets, 25 affichages)

  6. #6
    Futur Membre du Club
    Homme Profil pro
    analyste sport
    Inscrit en
    Avril 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : analyste sport
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2020
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Merci merci merci... j ai réussi...C'est vraiment la grande classe de votre part...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [LG]Probleme sur l'identification de typage
    Par axelmeunier dans le forum Langage
    Réponses: 10
    Dernier message: 19/01/2004, 13h41
  2. Identification par ip
    Par Dante dans le forum Développement
    Réponses: 9
    Dernier message: 12/01/2004, 12h20
  3. probleme identification et mot de passe root
    Par freums dans le forum Débuter
    Réponses: 5
    Dernier message: 19/09/2003, 17h09
  4. [servlet][identification][url]
    Par welty dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 20/08/2003, 09h10
  5. identification lettre (pb accent)
    Par scorbo dans le forum C
    Réponses: 5
    Dernier message: 14/12/2002, 02h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo