序列中的转换

transitions in a sequence

我有一个数据集,我想知道转换的概率。

所以我有三个这样的字母表(13 个州),它们是可能的: CCE CRE DEE FOE GOE ICE MEE PCE PRE PSE RLE WAE

例如,

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

我想得到字母之间的转换,例如在总转换中(假设 A、B、C、D 是不同的状态,有多少是到其他状态的?),

我期望输出如下:

B 这里是按顺序发生的总转换 C 这里是到其他状态的总转换

    df$C   
    1        
    0        
    3        
    0        

您可以使用基础 R 中的 rle

sapply(strsplit(A, '-'), function(i)length(rle(i)$lengths) - 1)
#[1] 1 0 3 0

您可以使用基础 R 中的 gsub:

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

编辑: 要获得唯一计数,只需将您的结果加 1