顺序过渡

时间:2020-11-10 15:37:10

标签: r dplyr stringr

我有一个数据集,我想转换的可能性。

所以我有三个可能的字母(13个州): CCE CRE DEE FOE GOE ICE ISE 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        

2 个答案:

答案 0 :(得分:1)

您可以在基数R中使用rle

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

答案 1 :(得分:1)

您可以使用基于R的gsub:

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

编辑: 要获得唯一计数,只需在结果中加1