1 pièce(s) jointe(s)
Sélectionner valeur unique
Bonjour,
j'ai le tableau suivant :
Pièce jointe 475903
J'ai créer une colonne "fusion" combinant "quadrat" et "année" et j'aimerai sélectionner que les valeurs uniques de "fusion" afin d'avoir les densités correspondantes.
Il y a la fonction unique() mais elle liste seulement les valeurs uniques de "fusion" et ne fait pas un nouveau tableau avec les "densités" correspondantes.
J'aimerai avoir le même tableau sans les doublons donc :
quadrat site gestion densité année ... fusion
A1 A Abandon 1.70 2000 2000_A1
A2 A Abandon 1.35 2000 2000_A2
A3 A Abandon 1.70 2000 2000_A3
J'espère avoir été claire
Merci de votre aide,
Cordialement
Sélectionner une observation par groupe
Bonjour,
Une alternative avec la fonction aggregate() :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| > df <- data.frame(quadrat = c("A1","A1","A2","A1"),
+ site = c("A","A","A","A"),
+ gestion = c("Abandon","Abandon","Abandon","Abandon"),
+ densite = c(1.70,1.70,1.35,2.55),
+ annee = c(2000,2000,2000,2001),
+ nbre_tiges = c(1,2,1,1))
> df
quadrat site gestion densite annee nbre_tiges
1 A1 A Abandon 1.70 2000 1
2 A1 A Abandon 1.70 2000 2
3 A2 A Abandon 1.35 2000 1
4 A1 A Abandon 2.55 2001 1 |
Code:
1 2 3 4 5
| > aggregate(densite ~ quadrat+site+gestion+annee, data=df, min)
quadrat site gestion annee densite
1 A1 A Abandon 2000 1.70
2 A2 A Abandon 2000 1.35
3 A1 A Abandon 2001 2.55 |
Le package sqldf peut aussi être utile pour gérer les variables qui varient :
Code:
1 2 3 4 5 6 7 8
| > library(sqldf)
> sqldf("select quadrat, site, gestion, annee, min(densite) as densite, max(nbre_tiges) as nbre_tiges_max
+ from df
+ group by quadrat, annee")
quadrat site gestion annee densite nbre_tiges_max
1 A1 A Abandon 2000 1.70 2
2 A1 A Abandon 2001 2.55 1
3 A2 A Abandon 2000 1.35 1 |
Cordialement,