Bonjour,
Après un peu de recherches, je n'ai pas trouvé de réponses à mes questions.
J'ai une table assez volumineuse (1400000x230) sur laquelle je travaille, et mes data.frame tuent ma machine avant de fournir un résultat.... je cheche donc à travailler avec des data.table, et donc à "convertir mon code"
L'idée est la suivante : je recherche des mots-clefs dans ma table, et si je le rencontre, je le remplace par le nom de sa colonne.
Une fois les changements faits, je collapse en enlevant les "NA" et "Inactif" pour n'obtenir qu'une seule colonne :Citation:
ref = c(Actif, Active)
C1 C2 C3 C4 C5 C6 C7 C8
Active NA NA Inactif Blabla Actif NA NA
devient :
C1 C2 C3 C4 C5 C6 C7 C8
C1 NA NA Inactif Blabla C6 NA NA
Voilà mon code sur les data.frame :Citation:
NomQuelconque
"C1 & Blabla & C6"
En espérant avoir été clair,Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Data = fread (data.csv, blabla) Data2 = as.data.frame (Data) sfInit(parallel=T, cpus=8, type='SOCK') #remplacement des termes Active/Actif par le nom de colonne res.1 = sfLapply(1:ncol(Data2),function(x,Data2){ vecteur = Data2[,x] vecteur[(!is.na(vecteur)) & (vecteur=="Active" | vecteur=="Actif")] = colnames(Data)[x] return(vecteur) }, Data2=Data2) #sur des gros volumes ma RAM (16Go) explose dans cette boucle #on met le résultat sous forme de matrice res.m = matrix(unlist(res), nrow=nrow(Data2), byrow=F) #collapse res.f = sfApply(res.m,1,function(x){ return(paste0(x[(!is.na(x)) & (x!="Inactif") & (x!="Inactive")], collapse = " & ")) }) sfStop()
Merci d'avance pour votre aide/vos conseils,
Guillaume