Fusion de tableau d'espèce

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

Augustin Soulard
Messages : 30
Enregistré le : 08 Avr 2019, 07:18

Fusion de tableau d'espèce

Messagepar Augustin Soulard » 24 Juin 2019, 15:22

Bonjour,

J'ai 2 tableaux avec des espèces (insectes) en ligne et des pièges en colonne. Je voudrais combiner ces tableaux et avoir un tableau qui fusionne les lignes où les espèces sont les mêmes et met aussi les lignes des espèces présentes dans un seul des 2 tableaux.

J'y arrive vraiment pas parce que je ne connais pas du tout R j'ai essayé ça pour le moment mais ça marche pas du tout :


R1 = read.table("R1.txt",h=T)
R2 = read.table("R2.txt",h=T)


glob = data.frame(R1[1,])
glob = glob[-1,]
a = 0
b = 0

for (i in nrow(R1)) {
eg = 0
for(j in nrow(R2)){
if(R1[1,i]==R2[1,j]){
eg = j;
}

}

if(eg!=0) {
t1=R1[-1];
t2=R2[-1];
glob= rbind(glob,t1[eg,]+t2[i,]);
a = 1;}
else{
b= 1;
t1=R1[-1];
glob = rbind(glob,t1[eg,]);

}
for(j in nrow(R2)){

}
}

Mais tableau pour mon test :

R1
code a b c d
esp1 2 3 4 8
esp2 5 6 7 1
esp3 8 4 9 1

R2
code a c b d
esp1 1 6 8 7
esp3 4 6 8 7
esp4 1 1 2 3

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

Re: Fusion de tableau d'espèce

Messagepar Serge Rapenne » 24 Juin 2019, 15:35

Bonjour,

Tu te compliques la vie, pour fusionner des tableaux, il y a la fonction merge

Code : Tout sélectionner

merge(R1,R2,by="code",all=T)
  code a.x b.x c.x d.x a.y c.y b.y d.y
1 esp1   2   3   4   8   1   6   8   7
2 esp2   5   6   7   1  NA  NA  NA  NA
3 esp3   8   4   9   1   4   6   8   7
4 esp4  NA  NA  NA  NA   1   1   2   3


Serge

Augustin Soulard
Messages : 30
Enregistré le : 08 Avr 2019, 07:18

Re: Fusion de tableau d'espèce

Messagepar Augustin Soulard » 24 Juin 2019, 20:05

Super merci beaucoup :)

Par contre, a t'il une manière simple d'aditionner les x et les y ? Pour avoir à nouveau 5 colonnes.

Augustin.

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

Re: Fusion de tableau d'espèce

Messagepar Serge Rapenne » 24 Juin 2019, 20:46

Alors une autre strategie s'impose ;-)

Tu peux faire comme ça en utilisant le package dplyr

Code : Tout sélectionner

library(dplyr)
resu<-bind_rows(R1,R2) %>% group_by(code)%>%   
  summarise_all(sum)
resu
A tibble: 4 x 5
  code      a     b     c     d
  <chr> <dbl> <dbl> <dbl> <dbl>
1 esp1      3     9    12    15
2 esp2      5     6     7     1
3 esp3     12    10    17     8
4 esp4      1     1     2     3

ou sans package supplémentaire mais peut être plus tordu à comprendre :

Code : Tout sélectionner

res <- aggregate(. ~ code, rbind(R1,R2), sum)
res
  code  a  b  c  d
1 esp1  3  9 12 15
2 esp2  5  6  7  1
3 esp3 12 10 17  8
4 esp4  1  1  2  3


Serge

Augustin Soulard
Messages : 30
Enregistré le : 08 Avr 2019, 07:18

Re: Fusion de tableau d'espèce

Messagepar Augustin Soulard » 24 Juin 2019, 20:53

Merci Serge <3


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité