Bonjour à tous,
En fait, j'ai effectué un algorithme qui tourne bien mais prend beaucoup de temps, et quand je dis beaucoup c'est une question d'heures!!!!
Je voudrais l’améliorer car je compte le réutiliser.
En fait, je possède 3 tables : tt7, tt4 et v
tt7 possède 75000 éléments
tt4 possède 5000 éléments
et v possède 1378 colonnes 200 éléments, cependant les lignes contiennent beaucoup de "NA" et le nombre d’éléments non "NA" varie selon les colonnes.
Je dois chercher les éléments de tt7 qui se trouvent dans tt4 en passant par v, car certains éléments de tt7 sont des sous-ensembles de tt4 (donc ils appartiennent à la même famille et chaque famille est représentée dans une colonne de v.
Voici mon algorithme ; j'avoue il n'est pas terrible.
j'utilise une table virtuelle s pour chaque occurrence et je compare ensuite avec tt4
J'espere que j'ai bien expliqué et si quelqu'un pouvait m'aider svp, je lui serais reconnaissant ou même en discuter pour trouver une solution.
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 h=1 g=matrix(data=0,nrow=1,ncol=4) g=data.frame(g) for(k in 1 : length(tt7[,1])) { s=matrix(data=0,nrow=200,ncol=2) s=data.frame(s) for(j in 1 : 1378){ p=length(levels(v[,j])) for (i in 1 : p){ if(v[i,j]==tt7[k,2] ) { s[,1]=v[,j] s[,2]=tt7[k,1] } } } for(n in 1: length(s[,1])) { for (t in 1 : length (tt4[,1])) { if ( tt4[t,6]==s[n,1] ) { g[h,1]=tt4[t,1] g[h,2]=tt4[t,6] g[h,3]=s[n,2] g[h,4]=tt7[k,2] h=h+1 } } } } } }
merci beaucoup![]()
Partager