transitions dans une séquence

Nov 10 2020

J'ai un jeu de données et je voudrais la probabilité de transition.

J'ai donc trois alphabets comme celui-ci (13 états) qui sont possibles: CCE CRE DEE FOE GOE ICE ISE MEE PCE PRE PSE RLE WAE

Par exemple,

 # A<- c('A-A-A-B', 'A-A-A-A', 'A-B-C-D', 'A-A')
 A<- c('CCE-CRE-DEE-DEE', 'FOE-FOE-GOE-GOE-GOE-ISE', 'ISE-PCE', 'ISE')
 library('stringr')
 B<- str_count(A, "-")
 df<- data.frame(A, B)

Je voudrais obtenir la transition entre les lettres, par exemple dans les transitions totales (combien sont-elles vers d'autres états en supposant que A, B, C, D sont des états différents?),

J'attends une sortie comme suit:

B voici les transitions totales se produisant dans la séquence C voici les transitions totales vers d'autres états

    df$C   
    1        
    0        
    3        
    0        

Réponses

1 Sotos Nov 10 2020 at 15:47

Vous pouvez utiliser à rlepartir de la base R,

sapply(strsplit(A, '-'), function(i)length(rle(i)$lengths) - 1)
#[1] 1 0 3 0
1 Onyambu Nov 10 2020 at 16:00

Vous pouvez utiliser gsub à partir de la base R:

 str_count(gsub('(\\w+)(-?\\1)+','\\1', A),'-')

MODIFIER: pour obtenir les nombres uniques, ajoutez simplement 1 aux résultats que vous avez