Supprimer somme ligne et colonne = 0 sous condition (LOGICIEL R)
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Supprimer somme ligne et colonne = 0 sous condition (LOGICIEL R)



  1. #1
    Laurie89

    Supprimer somme ligne et colonne = 0 sous condition (LOGICIEL R)


    ------

    Bonjour,

    Avec le logiciel R je souhaiterais écrire dans mon script deux commandes :
    - la première retire toutes les colonnes ne contenant que des 0
    - la seconde retire toutes les lignes ne contenant que des 0

    J'avais écrit ceci mais ça ne fonctionne pas bien :

    #Création D'un objet comprenant le cumul de toute les unites d'echantillonnage
    cum<-apply(tab,2,sum) # 2 designe les colonnes.
    cum #cumul des colonnes du tableau = total par espèce
    f0<-sum(cum==0) #f0 représente le nombre d'espèces pour lesquelles aucun individu n'a été relevé durant tous les échantillonnages.
    #Supprimer les colonnes avec que des 0
    for(i in 1:ncol (tab)){
    if(cum==0){ #si le nombre d'espèce où aucun individu n'a été trouvé n'est pas nul
    tab<-tab[,-i] #alors je veux enlever dans mon tableau les colonnes (espèces) où le recensement total = 0
    }else
    {tab<-tab[,] #sinon je n'enlève rien
    }
    }
    #Pour visualiser le nouveau nombre de colonnes
    nbcolonnes<-ncol(tab)
    nbcolonnes

    Et pour les lignes :




    #Supprimer les lignes avec que des 0 (NE FONCTIONNE PAS apres cum)
    cum2<-apply(tab,1,sum)#1 désigne les lignes
    cum2
    for(l in 1:nrow (tab)){
    if(cum2==0){ #si le nombre de relevés pour lesquels aucun individu n'a été référencé n'est pas nul.
    tab<-tab[-l,] #alors je veux enlever dans mon tableau les lignes (relevés) où le recensement total (toutes les espèces) du relevé = 0
    }else
    {tab<-tab[,] #sinon je n'enlève rien
    }
    }


    #Visualiser le nouveau nombre de lignes
    nblignes<-nrow(tab)
    nblignes


    Avez vous des solutions svp ?

    Merci d'avance !

    -----

  2. #2
    minushabens

    Re : Supprimer somme ligne et colonne = 0 sous condition (LOGICIEL R)

    bonjour, en supposant que ta matrice A contient des nombres, apply(A,1,min) renvoie un vecteur qui a le même nombre d'éléments que A a de lignes et qui contient le minimum par ligne. De même apply(A,1,max) renvoie les maxima par ligne.

    Donc

    A[(apply(A,1,min)!=0)|(apply(A,1 ,max)!=0),]

    élimine les lignes ne contenant que des zéros. S'il y a des données manquantes il faut ajouter l'option na.rm=T (et décider si on veut garder ou pas les lignes n'ayant que des zéros et des données manquantes)
    Dernière modification par minushabens ; 15/01/2018 à 11h01.

Discussions similaires

  1. Tableau dont la somme de chaque ligne et de chaque colonne est nulle
    Par mr_Y dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 30/06/2015, 21h07
  2. Supprimer les zeros de chaque colonne d'un matrice sans changer le nombre de colonne avec Matlab
    Par invite03f9a584 dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 21/01/2013, 20h20
  3. somme des cellules d'une colonne si les cellules de la colonne à coté est égale à 2011
    Par lekoukou13 dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 28/01/2012, 19h42
  4. Sous Win98 supprimer une ligne soft installé
    Par invite4034f2cc dans le forum Logiciel - Software - Open Source
    Réponses: 37
    Dernier message: 24/12/2008, 17h54
  5. supprimer colonne matlab
    Par invite1ca7ba4c dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 25/07/2008, 09h52