我有一个数据集,我想转换的可能性。
所以我有三个可能的字母(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
答案 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