我有一个由大量字符串组成的数据集,长度为12,从两个状态字母表(z,x)中提取。这是两个例子。
data <- c("zzxzzzxzzzzx","zzzxxzzzzzzx")
我希望计算由连续“z”序列组成的子串的频率。
在此示例中,所需频率为
“zz”,1(仅限数据[1])
“zzz”,2(每个数据[1]和数据[2]中有1个)
“zzzz”,1(仅限数据[1])
“zzzzzz”,1(仅限数据[2}
答案 0 :(得分:1)
不确定这是否是你想要的
library(stringi)
table(unlist(stri_extract_all_regex(data, '(?:(z+))\\1*')))
# zz zzz zzzz zzzzzz
# 1 2 1 1
或者这个
table(unlist(lapply(stri_extract_all_regex(data,
'(?:(z+))\\1*'), unique)))
# zz zzz zzzz zzzzzz
# 1 2 1 1
答案 1 :(得分:1)
table(unlist(strsplit(gsub('x{1,2}',' ',data),' ')))