Bonjour.

Mon pseudo est Heretic_Cris et j'ai besoin d'un coup de main pour un projet de l'université. Rassurez-vous rien de compliqué, je pense ...

J'ai un tableau avec les données et je dois le trier
Voici le concerné :

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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
> ocancer
     age   alcohol    tabac cas controles
1  25-34 0-39g/day 0-9g/day   0        40
2  25-34 0-39g/day    10-19   0        10
3  25-34 0-39g/day    20-29   0         6
4  25-34 0-39g/day      30+   0         5
5  25-34     40-79 0-9g/day   0        27
6  25-34     40-79    10-19   0         7
7  25-34     40-79    20-29   0         4
8  25-34     40-79      30+   0         7
9  25-34    80-119 0-9g/day   0         2
10 25-34    80-119    10-19   0         1
11 25-34    80-119      30+   0         2
12 25-34      120+ 0-9g/day   0         1
13 25-34      120+    10-19   1         1
14 25-34      120+    20-29   0         1
15 25-34      120+      30+   0         2
16 35-44 0-39g/day 0-9g/day   0        60
17 35-44 0-39g/day    10-19   1        14
18 35-44 0-39g/day    20-29   0         7
19 35-44 0-39g/day      30+   0         8
20 35-44     40-79 0-9g/day   0        35
21 35-44     40-79    10-19   3        23
22 35-44     40-79    20-29   1        14
23 35-44     40-79      30+   0         8
24 35-44    80-119 0-9g/day   0        11
25 35-44    80-119    10-19   0         6
26 35-44    80-119    20-29   0         2
27 35-44    80-119      30+   0         1
28 35-44      120+ 0-9g/day   2         3
29 35-44      120+    10-19   0         3
30 35-44      120+    20-29   2         4
31 45-54 0-39g/day 0-9g/day   1        46
32 45-54 0-39g/day    10-19   0        18
33 45-54 0-39g/day    20-29   0        10
34 45-54 0-39g/day      30+   0         4
35 45-54     40-79 0-9g/day   6        38
36 45-54     40-79    10-19   4        21
37 45-54     40-79    20-29   5        15
38 45-54     40-79      30+   5         7
39 45-54    80-119 0-9g/day   3        16
40 45-54    80-119    10-19   6        14
41 45-54    80-119    20-29   1         5
42 45-54    80-119      30+   2         4
43 45-54      120+ 0-9g/day   4         4
44 45-54      120+    10-19   3         4
45 45-54      120+    20-29   2         3
46 45-54      120+      30+   4         4
47 55-64 0-39g/day 0-9g/day   2        49
48 55-64 0-39g/day    10-19   3        22
49 55-64 0-39g/day    20-29   3        12
50 55-64 0-39g/day      30+   4         6
51 55-64     40-79 0-9g/day   9        40
52 55-64     40-79    10-19   6        21
53 55-64     40-79    20-29   4        17
54 55-64     40-79      30+   3         6
55 55-64    80-119 0-9g/day   9        18
56 55-64    80-119    10-19   8        15
57 55-64    80-119    20-29   3         6
58 55-64    80-119      30+   4         4
59 55-64      120+ 0-9g/day   5        10
60 55-64      120+    10-19   6         7
61 55-64      120+    20-29   2         3
62 55-64      120+      30+   5         6
63 65-74 0-39g/day 0-9g/day   5        48
64 65-74 0-39g/day    10-19   4        14
65 65-74 0-39g/day    20-29   2         7
66 65-74 0-39g/day      30+   0         2
67 65-74     40-79 0-9g/day  17        34
68 65-74     40-79    10-19   3        10
69 65-74     40-79    20-29   5         9
70 65-74    80-119 0-9g/day   6        13
71 65-74    80-119    10-19   4        12
72 65-74    80-119    20-29   2         3
73 65-74    80-119      30+   1         1
74 65-74      120+ 0-9g/day   3         4
75 65-74      120+    10-19   1         2
76 65-74      120+    20-29   1         1
77 65-74      120+      30+   1         1
78   75+ 0-39g/day 0-9g/day   1        18
79   75+ 0-39g/day    10-19   2         6
80   75+ 0-39g/day      30+   1         3
81   75+     40-79 0-9g/day   2         5
82   75+     40-79    10-19   1         3
83   75+     40-79    20-29   0         3
84   75+     40-79      30+   1         1
85   75+    80-119 0-9g/day   1         1
86   75+    80-119    10-19   1         1
87   75+      120+ 0-9g/day   2         2
88   75+      120+    10-19   1         1
Il s'agit d'un tableau qui décrit les contrôles des cancers d' œsophage en fonction de divers paramètres comme age, consommation alcool, tabac, le nombre des contrôles et le nombre des cas positifs. Le tableau est prêt à l'emploi avec des levels. Toutefois, j'arrive avec la ligne de code suivante à effectuer un calcul de ratio ( cas/ contrôles) pour la consommation de tabac.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
> tribytabac <- function(t){
+     (sum(ocancer$cas[ocancer$tabac==t]))/(sum(ocancer$controle[ocancer$tabac==t]))}
> sapply(levels(ocancer$tabac),tribytabac)
 0-9g/day     10-19     20-29       30+ 
0.1485714 0.2457627 0.2500000 0.3780488

Cependant, je dois arriver à faire la même chose mais en tenant compte d'age, donc l'idéal serait d'avoir quelque chose dans ce style là.

age "23-35"
0-9g/day     10-19        20-29       30+
donné 1       donné 2     donné 3    donné 4
et ça devrait être aussi pour chaque tranche d'age.
Je voudrais aussi une explication sur votre manière de faire, car je dois savoir refaire la même chose à l'examen. Merci d'avance.