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 :

Addition dans colonne grâce à une variable compteur


Sujet :

R

  1. #1
    Candidat au Club
    Homme Profil pro
    agronome
    Inscrit en
    Juillet 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : agronome

    Informations forums :
    Inscription : Juillet 2018
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Addition dans colonne grâce à une variable compteur
    Bonjour,

    Grâce à la variable compteur, je souhaiterais compter le nombre de 255 présent dans la colonne Y ou alors faire une soustraction dans la colonne X entre chaque 1. Je ne trouve pas de formule pour résoudre ce problème.

    Merci de votre aide,
    QV

    Nom : Capture.PNG
Affichages : 810
Taille : 5,5 Ko

  2. #2
    Membre averti
    Homme Profil pro
    Data scientist
    Inscrit en
    Février 2017
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data scientist
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2017
    Messages : 211
    Points : 343
    Points
    343
    Par défaut
    Bonjour,

    Tu peux utiliser la fonction "summary", c'est plus simple si tu veux forcement utiliser la variable x, je peux te proposer ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    datatest = data.frame( x = 0:18 , y = c(rep(255,6), rep(0,13)),
                           tot = c(1, rep(0,5),1, rep(0,12)))
     
    #avec la fonction summary 
    summary(as.factor(datatest$y))
     
    #sinon 
    temp = subset(datatest, datatest$tot == 1 )
     
    comptage255 = datatest$x[2] - datatest$x[1]
     
    #si plusieurs valeurs tu peux faire une boucle for sur les lignes de ta table temp.

  3. #3
    Membre éclairé
    Homme Profil pro
    Chercheur
    Inscrit en
    Décembre 2015
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 327
    Points : 793
    Points
    793
    Par défaut
    compter le nombre de 255 présent dans la colonne Y
    soustraction dans la colonne X entre chaque 1
    - si c'est entre deux lignes consécutives, alors il suffit d'utiliser la fonction diff :
    - si c'est faire la différence entre les valeurs de X pour les lignes dont une autre colonne (par exemple TOT) vaut 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    diff <- with( dataset, diff( X[TOT == 1]))
    - mais est-ce exactement cela que tu veux ?

  4. #4
    Candidat au Club
    Homme Profil pro
    agronome
    Inscrit en
    Juillet 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : agronome

    Informations forums :
    Inscription : Juillet 2018
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Réponse
    Bonjour,

    Tout d'abord merci à tous pour vos réponses.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    diff <- with( dataset, diff( X[TOT == 1]))
    Faubry j'arrive à m'en sortir avec ta formule. Seulement dans mon tableau, je voudrais connaitre le nombre de 255 par série sachant qu'il peut contenir jusqu'à 500 valeurs. Chaque valeur de 255 vaut 1 pixel = 1cm. Je cherche à séparer mes lots de 255 afin de connaitre en cm ce que je cherche à mesurer. Ta formule est utile Faubry, seulement je ne veux pas que les 0 entre les 255 soient comptés...


    merci pour votre aide,
    QV

  5. #5
    Candidat au Club
    Homme Profil pro
    agronome
    Inscrit en
    Juillet 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : agronome

    Informations forums :
    Inscription : Juillet 2018
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Réponse Marou
    Re-bonjour,

    Avec ta formule Marou, temp = subset(b, b$tot == 1) j'obtient le tableau suivant : Nom : Capture.PNG
Affichages : 741
Taille : 6,0 Ko

    Ce que je souhaite, comme je l'ai dit précédemment, c'est compter le nombre de 255, c'est possible ici avec la colonne X en faisant des différences. Comment monter la formule tout est la question ?

    Merci d'avance pour votre aide,
    QV

  6. #6
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Moi ce que je ferai pour être vraiment simple c'est

    Entre crochets il est sélectionné les y ayant une valeur de 255. La fonction table permet de compter le nombre de fois qu'apparait la valeur 255.
    J'espère que cela va t'aider.

  7. #7
    Candidat au Club
    Homme Profil pro
    agronome
    Inscrit en
    Juillet 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : agronome

    Informations forums :
    Inscription : Juillet 2018
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Réponse
    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
    b=read.csv("Y1X10rg2.csv", header=T, sep=",", dec=".")
    b$y[b$y>=1]<-255
     
    b$tot <- c(TRUE, b$y[-1]!=b$y[-nrow(b)])*1
    temp = subset(b, b$tot==1)
    r<- 1
    r<-data.frame(r)
    for(i in 1:nrow(temp)){
      if(temp[i,2] == 255){
        r[i,1] <- (temp[i+1,1]-temp[i,1])-1
        r <- data.frame(r)
      }
      else{}
    }
    r <- subset(r, r != 0)
    Nom : Capture.PNG
Affichages : 755
Taille : 1,4 Ko

    Bonjour à tous,

    Voici comment j'ai réussi à m'en sortir. Je voudrais maintenant l'appliquer à une multitude de fichiers et les regrouper en un seul à la fin. J'ai un problème pour renommer ma colonne avec le Y1X10rg2.csv de départ. voici le code que j'ai fabriqué pour l'appliquer à tous mes fichiers. j'obtient bien ma liste mais je n'arrive pas à renommer chaque élément de la liste par son nom de départ.

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    library(here)
    library(readr)
    setwd(here(paste("data1", sep="",collapse = NULL)))
    files <- list.files(here(paste("data1",sep="",collapse=NULL)))
    nb_files <- length(files)
    m <- data.frame(files)
     
    b <- sapply(files, read.table, header=T, sep=",", dec=".")
    b <- data.frame(b)
    b <- t(b)
     
     
     
     
     
    temp<-1
    temp <- list(temp)
     
     
    for(j in 1:nb_files){
     
      b[[j]]$y[b[[j]]$y>=10]<-255
      b[[j]]$tot <- c(TRUE, b[[j]]$y[-1]!=b[[j]]$y[-nrow(b[[j]])])*1
      temp[[j]] <- subset(b[[j]],  b[[j]]$tot==1)
      temp[[j]]$V4 <-0
      for(i in 1:nrow(temp[[j]])){
      if(temp[[j]][i,2] == 255){
        temp[[j]][i,4] <- temp[[j]][i+1,1]-temp[[j]][i,1]-1
    }
      else{}
    }
    }
     
     
    for(j in 1:nb_files){
      #temp[[j]]$x<-NULL
      #temp[[j]]$y<-NULL
      #temp[[j]]$tot<-NULL
      temp[[j]] <- replace(temp[[j]],is.na(temp[[j]]),0)
      temp[[j]] <- subset(temp[[j]], temp[[j]]$V4 != 0)
     
    }

Discussions similaires

  1. Recherche min dans la colonne d'une variable tableau multidimensionnel
    Par Vincent32 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 27/06/2017, 02h41
  2. Requête avec nom de colonne intégrant une variable
    Par pentoneal dans le forum PL/SQL
    Réponses: 6
    Dernier message: 19/10/2009, 14h48
  3. [WD14] Champ Jauge dans colonne d'une table
    Par mail.spam dans le forum WinDev
    Réponses: 3
    Dernier message: 04/06/2009, 14h19
  4. Réponses: 1
    Dernier message: 30/05/2008, 11h51
  5. Réponses: 5
    Dernier message: 26/03/2008, 21h48

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