moyenne sur un nombre minimale de valeur

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

Stephan Defoy
Messages : 59
Enregistré le : 19 Déc 2019, 14:07

moyenne sur un nombre minimale de valeur

Messagepar Stephan Defoy » 27 Mai 2020, 10:12

Bonjour,

J'ai un data-frame :

Code : Tout sélectionner

 don
station       date    T   Td T_ERA Td_ERA  decade
1    65528 1990010521 23.0 11.0 23.61   7.66 1990011
2    65528 1990010600 19.3 14.2 20.98   6.47 1990011
3    65528 1990010606 14.4 11.8 17.03   6.93 1990011
4    65528 1990010609 19.7 11.0 21.46   6.03 1990011
5    65528 1990010612 28.8 10.9 30.37   3.84 1990011
6    65528 1990010615 32.5 13.0 33.83   5.78 1990011
7    65528 1990010618 30.0 13.8 30.79  13.36 1990011
8    65528 1990010621 23.2 13.7 23.44   8.65 1990011
9    65528 1990010700 18.5 13.4 19.31   8.68 1990011
10   65528 1990010703 15.3 12.1 16.80   4.48 1990011
11   65528 1990010706 15.5  8.4 16.54   4.11 1990011
12   65528 1990010709 21.0  8.6 21.60   4.13 1990011
13   65528 1990010712 31.0  9.4 31.12   4.74 1990011
14   65528 1990010715 33.5 11.9 34.14   8.69 1990011
15   65528 1990010718 31.5  9.4 31.52  13.68 1990011
16   65528 1990010721 23.5 10.0 23.44   8.82 1990011
17   65528 1990010803 16.6 12.0 17.02   9.57 1990011
18   65528 1990010806 14.5 10.8 17.53   8.59 1990011
19   65528 1990010815 33.6  9.0 33.80  10.16 1990011
20   65528 1990010818 31.6 11.1 31.19  16.83 1990011
21   65528 1990010821 25.0 13.0 24.66  12.99 1990011
22   65528 1990010900 22.5 13.8 23.04  13.12 1990011
23   65528 1990010903 19.8 15.2 21.24  14.15 1990011
24   65528 1990010906 18.7 14.4 20.87  14.96 1990011
25   65528 1990010909 21.6 15.8 24.35  16.93 1990011
26   65528 1990010912 30.1 16.8 32.80  14.51 1990011
27   65528 1990010915 33.2 16.8 35.13  13.04 1990011
28   65528 1990010918 32.1 17.5 32.55  14.85 1990011
29   65528 1990011000 24.0 18.8 25.18  18.51 1990012
30   65528 1990011003 22.5 19.0 23.77  17.13 1990012
31   65528 1990011006 20.9 18.9 23.33  18.11 1990012
32   65528 1990011009 24.0 17.3 25.76  17.99 1990012
33   65528 1990011012 30.2 18.4 32.11  16.51 1990012
34   65528 1990011015 34.0 14.4 34.60  13.99 1990012
35   65528 1990011018 32.0 15.8 32.86  18.25 1990012
36   65528 1990011021 26.5 17.1 26.38  17.13 1990012
37   65528 1990011100 22.0 16.4 23.59  16.55 1990012
38   65528 1990011109 22.4 14.8 23.95  18.03 1990012
39   65528 1990011112 31.5  7.5 33.38  11.45 1990012
40   65528 1990011118 31.4 10.3 32.25  14.19 1990012
41   65528 1990011121 25.0 11.2 26.27  12.54 1990012
42   65528 1990011206 16.5 13.0 19.84  14.69 1990012
43   65528 1990011209 19.6 11.6 22.85  13.85 1990012
44   65528 1990011212 29.5 11.0 31.34   9.93 1990012
45   65528 1990011215 33.0 13.3 34.07  11.60 1990012
46   65528 1990011218 31.5 15.2 31.89  14.89 1990012
47   65528 1990011221 27.5 13.5 26.92  17.39 1990012
48   65528 1990011300 24.5 13.7 24.31  17.65 1990012
49   65528 1990011303 22.7 14.2 22.93  18.46 1990012
50   65528 1990011306 21.0 12.4 22.52  18.70 1990012
51   65528 1990011309 22.0 14.0 23.94  17.76 1990012
52   65528 1990011312 28.4  7.8 30.73   5.66 1990012
53   65528 1990011403 19.8 10.6 20.08   7.65 1990012
54   65528 1990011406 18.8  9.2 19.03   8.69 1990012
55   65528 1990011409 22.5  6.8 23.21   2.91 1990012
56   65528 1990011412 29.0  7.1 29.92  -0.13 1990012
57   65528 1990011500 20.1 11.1 21.56   5.90 1990012
58   65528 1990011503 18.2  8.6 18.53   4.15 1990012
59   65528 1990011506 16.6  7.7 18.44   3.99 1990012
60   65528 1990011509 20.2  8.0 21.47   4.59 1990012
61   65528 1990011515 32.0 13.4 33.01   5.24 1990012
62   65528 1990011518 30.2 13.6 30.49   9.10 1990012
63   65528 1990011600 20.1 11.0 21.23   6.41 1990012
64   65528 1990011603 18.3  9.4 18.73   5.94 1990012
65   65528 1990011606 16.5  7.8 17.45   6.09 1990012
66   65528 1990011609 19.5 17.3 20.48   2.40 1990012
67   65528 1990011612 30.6  5.0 29.87   0.38 1990012

Je voudrais effectuer une moyenne sur chacune de mes décades à condition d'avoir plus de 30 valeurs par décade. Je ne suis pas sûr de mon code :

Code : Tout sélectionner

c=aggregate (don$T,by=list(don$decade & length(don$decade>30)),mean)

Qu'en pensez-vous ? car je trouve la valeur ci-dessous qui me semble erronée.

Code : Tout sélectionner

c
  Group.1        x
1    TRUE 24.40299

Merci d'avance pour votre éclairage,

Stéphan,

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

Re: moyenne sur un nombre minimale de valeur

Messagepar Pierre-Yves Berrard » 27 Mai 2020, 12:58

Cette syntaxe ne fonctionnera pas car length(don$decade>30) vaudra toujours le nombre de lignes total de la table.
Combiné avec & à une chaîne de caractères, cela vaudra toujours TRUE (d'où votre résultat).

Il faut faire le calcul par don$decade et gérer le seuil dans la fonction (à la place de mean, donc).
Ou bien filtrer au préalable les données pour n'avoir que les décades au dessus du seuil.
PY

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

Re: moyenne sur un nombre minimale de valeur

Messagepar Logez Maxime » 27 Mai 2020, 13:31

Bonjour,

je ferais ceci :

Code : Tout sélectionner

aggregate(T ~ decade, tab, FUN = function(x) ifelse(length(x)>=30, mean(x), NA))

Cordialement,
Maxime

Stephan Defoy
Messages : 59
Enregistré le : 19 Déc 2019, 14:07

Re: moyenne sur un nombre minimale de valeur

Messagepar Stephan Defoy » 28 Mai 2020, 11:39

Super !, merci bien Maxime et Pierre-Yves !!


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité