% de similarité

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Marine Dupont
Messages : 6
Enregistré le : 14 Jan 2019, 07:54

% de similarité

Messagepar Marine Dupont » 21 Jan 2019, 09:16

Bonjour,

Je débute sur R. J'examine plusieurs séquences et j'aimerai savoir leur pourcentage de similarité. Je m'explique avec un exemple.

ex :
séquence 1 --> AZERTTYUIO
séquence 2 --> AZEFRTYUIO

Dans ces deux séquences il y a 8 lettres à la même position, donc une similarité de 80%.

Merci d'avance pour vos conseils.

Pierre-Yves Berrard
Messages : 650
Enregistré le : 12 Jan 2016, 23:30

Re: % de similarité

Messagepar Pierre-Yves Berrard » 21 Jan 2019, 10:35

Bonjour,

Une solution en éclatant chaque chaîne en vecteur des lettres le composant :

Code : Tout sélectionner

sequence1 <- "AZERTTYUIO"
sequence2 <- "AZEFRTYUIO"

split_seq <-
  strsplit(
    c(sequence1, sequence2),
    split = ""
  )
mean(split_seq[[1]] == split_seq[[2]])

Si vous voulez faire quelque chose de moins basique, vous pouvez chercher du côté des distances entre chaînes de caractères, par exemple la fonction adist (distance de Levenshtein) ou le package stringdist.
PY

Michaël Delorme
Messages : 35
Enregistré le : 04 Avr 2016, 10:21

Re: % de similarité

Messagepar Michaël Delorme » 21 Jan 2019, 10:52

Il s'agit de distance de Hamming dans ce cas particulier (chaînes de même longueur).

Code : Tout sélectionner

library(stringdist)

a <- "AZERTTYUIO"
b <- "AZEFRTYUIO"
dist <- stringdist(a, b, method = "hamming")

(nchar(a) - dist) / nchar(a) * 100


https://fr.wikipedia.org/wiki/Distance_de_Hamming
http://www.markvanderloo.eu/yaRb/2013/02/26/the-stringdist-package/

--

Marine Dupont
Messages : 6
Enregistré le : 14 Jan 2019, 07:54

Re: % de similarité

Messagepar Marine Dupont » 01 Fév 2019, 16:18

Bonjour,

Je suis désolée pour ma réponse tardive.
Merci à vous deux pour vos réponses. Je vais utiliser le package que vous m'avez suggéré.

Bonne journée.
Marine


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Bing [Bot] et 1 invité