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
    invite25f0fe25

    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
    invite9dc7b526

    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)

Discussions similaires

  1. Tableau dont la somme de chaque ligne et de chaque colonne est nulle
    Par invite7ba723ca dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 30/06/2015, 22h07
  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, 21h20
  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, 20h42
  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, 18h54
  5. supprimer colonne matlab
    Par invite1ca7ba4c dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 25/07/2008, 10h52