changer d'échelle d'un data.frame

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

Tomas leon
Messages : 51
Enregistré le : 09 Jan 2018, 16:12

changer d'échelle d'un data.frame

Messagepar Tomas leon » 23 Jan 2018, 17:23

Bonjour à tous,

J'ai une question technique pour vous s'il vous plait :

Code : Tout sélectionner

 
Date      N°obs   Superf   Journée   Ois   Mal   Fem   Juv   ................
30/10/2004   1      13,52      matin   55   35   20   0   0   0
30/10/2004   1      14,04      matin   55   35   20   0   0   0
30/10/2004   1      14,21      matin   55   35   20   0   0   0
30/10/2004   1      13,51      matin   55   35   20   0   0   0
30/10/2004   1      14,27      matin   55   35   20   0   0   0
30/10/2004   1      14,27      matin   55   35   20   0   0   0
30/10/2004   1      14,28      matin   55   35   20   0   0   0
30/10/2004   1      13,20      matin   55   35   20   0   0   0
30/10/2004   1      14,54      matin   55   35   20   0   0   0
30/10/2004   1      14,21      matin   55   35   20   0   0   0
30/10/2004   1      13,79      matin   55   35   20   0   0   0
30/10/2004   2      10,00      matin   48   30   18   4   0   0
30/10/2004   2      16,37      matin   48   30   18   4   0   0
30/10/2004   2      12,34      matin   48   30   18   4   0   0
30/10/2004   2      12,53      matin   48   30   18   4   0   0
30/10/2004   2      14,81      matin   48   30   18   4   0   0
30/10/2004   2      16,83      matin   48   30   18   4   0   0
.............
.............
05/11/2004   3      34,3      apmidi   34   14   20   8   0   ........
..............
..............

 


Mon problème c'est qu'ici mon jeu de données est à l'échelle de la superficie (parce qu'elle sous entend une variable parcelle, plusieurs parcelles sont traversées lors d'une observation = plusieurs valeurs de superficies notées par n°d'observation) et j'aimerais avoir un jeu de données à l'échelle du n° observation, pour que 1 ligne = 1 observation. Il faudrait donc faire une somme de la superficie pour avoir une superficie totale en fonction du n° d'observation. Cependant il ne faut pas toucher aux autres variables, puisque seulement une valeur de comptage est notée et répétée dans toutes les cases pour un numéro d'observation (il ne faut pas en faire des sommes donc). Et tout cela en gardant la bonne date de l'observation (en posxict dans mon jeu de données) puisque J'ai plusieurs journées de suivies sur plusieurs années, et donc il faut que le n°obs corresponde bien à la journée dans laquelle l'observation a été faite (je peux de nouveau avoir un numéro d'observation n°1 le jours d'après par exemple, donc il ne faut pas agréger tous les n°1 indépendamment de la date).
Je trouve ça un peu tordu mais auriez vous une solution pour réajuster mon tableau sil vous plait ?
Exemple de ce que j'espère :


Code : Tout sélectionner

Date      N°obs   Superf   Journée   Ois   Mal   Fem   Juv   ................
30/10/2004   1      163,8      matin   55   35   20   0   0   0
30/10/2004   2      82,88      matin   48   30   18   4   0   0
...........
............



Merci à tous !

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: changer d'échelle d'un data.frame

Messagepar Pierre-Yves Berrard » 23 Jan 2018, 18:10

Bonjour,

Avec depart en données initiales :

Code : Tout sélectionner

library(dplyr)

group_depart <- depart %>% group_by(Date, N.obs)

superf <- group_depart %>% summarise_at(vars( Superf), sum)
autres <- group_depart %>% summarise_at(vars(-Superf), first)

res <- full_join(superf, autres, by = c("Date", "N.obs"))
PY

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: changer d'échelle d'un data.frame

Messagepar Logez Maxime » 23 Jan 2018, 19:48

Bonjour,

une autre possibilité :

Code : Tout sélectionner

tab %>% group_by(N.obs) %>% mutate(Superf = sum(Superf)) %>% slice(1)

Cordialement,
Maxime

Tomas leon
Messages : 51
Enregistré le : 09 Jan 2018, 16:12

Re: changer d'échelle d'un data.frame

Messagepar Tomas leon » 24 Jan 2018, 08:57

Salut à tous,

Merci pour ces réponses !

La méthode de Pierre-Yves fonctionne parfaitement !

( Par contre la méthode de Logez ne répond pas à ma question --> ce code a agrégé tous mes numéros d'observations, du coup je n'ai qu'une ligne par n° d'observation, il n'y a pas de distinction date & n°observation. )

Encore merci

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: changer d'échelle d'un data.frame

Messagepar Pierre-Yves Berrard » 24 Jan 2018, 09:08

Tomas leon a écrit :( Par contre la méthode de Logez ne répond pas à ma question --> ce code a agrégé tous mes numéros d'observations, du coup je n'ai qu'une ligne par n° d'observation, il n'y a pas de distinction date & n°observation. )


Il faut ajouter Date à group_by dans la méthode de Maxime et ça devrait marcher.
PY


Retourner vers « Questions en cours »

Qui est en ligne

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