Je continue ma découverte de R...
Et du coup je me trouve encore confronté à des problèmes de représentation de mes données afin d'en tirer le maximum d'info sans implémentation supplémentaire.
J'ai un tableau de classes de taux de cholesterol et l'effectif pour chaque classe :

[1.0,1.4[ n=6
[1.4,1.6[ n=13
[1.6,1.8[ n=16
[1.8,2.0[ n=22
[2.0,2.2[ n=18
[2.2,2.4[ n=10
[2.4,2.6[ n=6
[2.6,2.8[ n=4
[2.8,3.0[ n=3
[3.0,3.4[ n=2

J'ai fait ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 
# vecteur des classes : 11 valeurs et
# produira les 10 classes suivantes :
# 1 a 1.4
# 1.4 a 1.6
# 1.6 a 1.8
# 1.8 a 2
# 2 a 2.2
# 2.2 a 2.4
# 2.4 a 2.6
# 2.6 a 2.8
# 2.8 a 3
# 3 a 3.4
> classes<-c(1,1.4,1.6,1.8,2,2.2,2.4,2.6,2.8,3,3.4)
> classes
 [1] 1.0 1.4 1.6 1.8 2.0 2.2 2.4 2.6 2.8 3.0 3.4
 
# vecteur des effectifs pour chaque classe
# doit avoir 11 effectifs aussi pour etre
# compatible avec le vecteur de classes :
# on ajoute 0 pour les derniers effectif
> effectifs<-c(6,13,16,22,18,10,6,4,3,2,0)
> effectifs
 [1]  6 13 16 22 18 10  6  4  3  2  0
 
# on replique pour chaque classe (debut de classe)
# suivant les effectifs =>
# 6 valeurs 1.0 pour la classe [1.0,1.2[
# 13 valeurs 1.4 pour la classe [1.2,1.4[
# ...
# 2 valeurs pour la classe [3.0,+[
> taux<-rep(classes,effectifs)
> taux
  [1] 1.0 1.0 1.0 1.0 1.0 1.0 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4
 [19] 1.4 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.6 1.8
 [37] 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8 1.8
 [55] 1.8 1.8 1.8 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0
 [73] 2.0 2.0 2.0 2.2 2.2 2.2 2.2 2.2 2.2 2.2 2.2 2.2 2.2 2.4 2.4 2.4 2.4 2.4
 [91] 2.4 2.6 2.6 2.6 2.6 2.8 2.8 2.8 3.0 3.0
 
# création des classes elles-mêmes :
# right = FALSE pour avoir un intervalle de la forme [x,y[
> chol_table<-cut(taux,classes,right=FALSE)
# on obtient bien :
# 6 valeurs dans la classe [1,1.4[
# 13 valeurs dans la classe [1.4,1.6[
# ...
# 2 valeurs dans la classe [3,3.4[
> chol_table
  [1] [1,1.4)   [1,1.4)   [1,1.4)   [1,1.4)   [1,1.4)   [1,1.4)   [1.4,1.6)
  [8] [1.4,1.6) [1.4,1.6) [1.4,1.6) [1.4,1.6) [1.4,1.6) [1.4,1.6) [1.4,1.6)
 [15] [1.4,1.6) [1.4,1.6) [1.4,1.6) [1.4,1.6) [1.4,1.6) [1.6,1.8) [1.6,1.8)
 [22] [1.6,1.8) [1.6,1.8) [1.6,1.8) [1.6,1.8) [1.6,1.8) [1.6,1.8) [1.6,1.8)
 [29] [1.6,1.8) [1.6,1.8) [1.6,1.8) [1.6,1.8) [1.6,1.8) [1.6,1.8) [1.6,1.8)
 [36] [1.8,2)   [1.8,2)   [1.8,2)   [1.8,2)   [1.8,2)   [1.8,2)   [1.8,2)
 [43] [1.8,2)   [1.8,2)   [1.8,2)   [1.8,2)   [1.8,2)   [1.8,2)   [1.8,2)
 [50] [1.8,2)   [1.8,2)   [1.8,2)   [1.8,2)   [1.8,2)   [1.8,2)   [1.8,2)
 [57] [1.8,2)   [2,2.2)   [2,2.2)   [2,2.2)   [2,2.2)   [2,2.2)   [2,2.2)
 [64] [2,2.2)   [2,2.2)   [2,2.2)   [2,2.2)   [2,2.2)   [2,2.2)   [2,2.2)
 [71] [2,2.2)   [2,2.2)   [2,2.2)   [2,2.2)   [2,2.2)   [2.2,2.4) [2.2,2.4)
 [78] [2.2,2.4) [2.2,2.4) [2.2,2.4) [2.2,2.4) [2.2,2.4) [2.2,2.4) [2.2,2.4)
 [85] [2.2,2.4) [2.4,2.6) [2.4,2.6) [2.4,2.6) [2.4,2.6) [2.4,2.6) [2.4,2.6)
 [92] [2.6,2.8) [2.6,2.8) [2.6,2.8) [2.6,2.8) [2.8,3)   [2.8,3)   [2.8,3)
 [99] [3,3.4)   [3,3.4)
10 Levels: [1,1.4) [1.4,1.6) [1.6,1.8) [1.8,2) [2,2.2) [2.2,2.4) ... [3,3.4)
Bon la représentation me semble convenable même si j'ai mis les derniers effectifs à 0 pour avoir 2 vecteurs de même dimension.
Le souci c'est que l'objet chol_table obtenu est un "factor" et que la moyenne dessus ne fonctionne pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
> mean(chol_table)
[1] NA
Warning message:
In mean.default(chol_table) :
  l'argument n'est ni numérique, ni logique : renvoi de NA
Et summary ne me donne ni moyenne, ni quantiles mais seulement les effectifs par classe (ce qui est déjà pas mal puisque cohérent avec mes données...)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
> summary(chol_table)
  [1,1.4) [1.4,1.6) [1.6,1.8)   [1.8,2)   [2,2.2) [2.2,2.4) [2.4,2.6) [2.6,2.8) 
        6        13        16        22        18        10         6         4 
  [2.8,3)   [3,3.4) 
        3         2
Merci pour toutes vos pistes et aide.