Je fais appel à votre aide car je sèche.
J'essaie de reduire la taille de ma base de données en regroupant les données semblables mais qui ne sont pas de vrais doublons.
J'ai par exemple :
CANCELLATION DATE
CANCELATION DATE
CANCELLATON DATE
que j'aimerais regrouper comme :
CANCELLATION DATE, par exemple
Impossible à faire en excel, j'essaie donc d'utiliser les kmeans et de regrouper en fonction de clusters sur R, j'ai l'impression de m'y prendre mal parce que mon code ne donne aucune erreur mais ne fonctionne pourtant pas.
Code : Tout sélectionner
headers = unique(modelTable$HEADERS)
modelTable[, CLUSTER:=integer(nrow(modelTable))]
for (h in headers){
#dt = modelTable
dt = modelTable[h==modelTable$HEADERS]
header = dt$HEADERS
headersu = unique(header)
d = stringdistmatrix(headersu, headersu, method="jw")
distmat = as.dist(d, diag = T)
if (length(headersu)<=2 ){
dt[, CLUSTER:=(1:nrow(dt))]
}else{
k = kmeans(distmat, min(nrow(d)-1, length(headersu)))
i = 1
for (a in headersu){
dt[a==header, CLUSTER:= k$cluster[i]]
i = i+1
}
}
modelTable[h==modelTable$HEADERS, CLUSTER:=dt$CLUSTER]
}
groupTable = unique(modelTable, by=c("HEADERS", "CLUSTER"))
groupTable[, NBCLUSTERS:=max(CLUSTER), by= "HEADERS"]
Auriez-vous des pistes ? ou des corrections ?
Merci par avance