Übergänge in einer Sequenz

Nov 10 2020

Ich habe einen Datensatz und möchte die Wahrscheinlichkeit eines Übergangs.

Ich habe also drei solche Alphabete (13 Zustände), die möglich sind: CCE CRE DEE FOE GOE ICE ISE MEE PCE PRE PSE RLE WAE

Zum Beispiel,

 # 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)

Ich möchte den Übergang zwischen den Buchstaben erhalten, zum Beispiel in den Gesamtübergängen (wie viele sind zu anderen Zuständen, wenn A, B, C, D unterschiedliche Zustände sind?),

Ich erwarte eine Ausgabe wie folgt:

B hier sind die Gesamtübergänge, die in der Sequenz C auftreten. Hier sind die Gesamtübergänge zu anderen Zuständen

    df$C   
    1        
    0        
    3        
    0        

Antworten

1 Sotos Nov 10 2020 at 15:47

Sie können rlevon Basis R verwenden,

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

Sie könnten gsub von Basis R verwenden:

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

BEARBEITEN: Um die eindeutigen Zählungen zu erhalten, addieren Sie einfach 1 zu den Ergebnissen, die Sie haben