R 在序列中找到特定的模式
我正在使用R软件包TraMineR对序列分析进行一些学术研究 我想找到一个模式,定义为某人在目标公司,然后离开,然后回到目标公司 (简化)我将州A定义为目标公司;B为外部工业公司,C为内部工业公司 所以我想做的是找到具有特定模式A-B-A或A-C-A的序列 看了这个问题()并阅读了用户指南,特别是以下段落: 4.3.3子序列 如果u的所有连续元素ui>在同一时间出现在x中,则序列u是x的子序列 顺序,我们用ux表示。根据这种否认,可以出现非共享>状态 在序列u和x共有的序列之间。例如,u=S;M是的>子序列 x=S;UM司仪 及 7.3.2寻找具有给定子序列的序列 函数的作用是:计算包含给定子序列的序列数并收集 它们的行索引号。函数返回一个包含两个元素的列表。rst元素MTab, 只是一个表,其中包含数据中给定子序列的出现次数。注意 每个序列只计算一次出现次数,即使子序列出现多个 顺序中的时间。列表的第二个元素MIndex给出了 包含子序列的序列。这些索引编号对于访问 相关序列(示例如下)。因为在字符串中搜索模式更容易, 当将seqconc函数用于 真正的选择 我得出结论,seqpm()是完成工作所需的函数 所以我有这样的序列: A-A-A-A-B-B-B-B-A-A-A-A-A-A 根据我在mentiod源上找到的子序列的定义,我想我可以通过使用:R 在序列中找到特定的模式,r,traminer,R,Traminer,我正在使用R软件包TraMineR对序列分析进行一些学术研究 我想找到一个模式,定义为某人在目标公司,然后离开,然后回到目标公司 (简化)我将州A定义为目标公司;B为外部工业公司,C为内部工业公司 所以我想做的是找到具有特定模式A-B-A或A-C-A的序列 看了这个问题()并阅读了用户指南,特别是以下段落: 4.3.3子序列 如果u的所有连续元素ui>在同一时间出现在x中,则序列u是x的子序列 顺序,我们用ux表示。根据这种否认,可以出现非共享>状态 在序列u和x共有的序列之间。例如,u=S;M
seqpm(sequence,"ABA")
但事实并非如此。为了找到示例序列,我需要输入
seqpm(sequence,"ABBBBBA")
这对我所需要的不是很有用
非常感谢 帮助页面的标题是“查找序列中的子字符串模式”,这就是函数的实际功能。它搜索包含给定子字符串(不是子序列)的序列。用户指南中似乎存在公式错误 查找包含给定子序列的序列的解决方案是使用
sequecreate
将状态序列转换为事件序列,然后使用sequefsub
和sequeaplysub
函数。我使用TraMineR
附带的actcal
数据进行说明
library(TraMineR)
data(actcal)
actcal.seq <- seqdef(actcal[,13:24])
## displaying the first state sequences
head(actcal.seq)
## transforming into event sequences
actcal.seqe <- seqecreate(actcal.seq, tevent = "state", use.labels=FALSE)
## displaying the first event sequences
head(actcal.seqe)
## now searching for the subsequences
subs <- seqefsub(actcal.seqe, strsubseq=c("(A)-(D)","(D)-(B)"))
## and identifying the sequences that contain the subsequences
subs.pres <- seqeapplysub(subs, method="presence")
head(subs.pres)
## we can now, for example, count the sequences that contain (A)-(D)
sum(subs.pres[,1])
## or list the sequences that contain (A)-(D)
rownames(subs.pres)[subs.pres[,1]==1]
库(TraMineR)
数据(actcal)
噢,我希望他们有一个工具可以直接在状态序列上进行搜索。我会把这个建议和用户指南上的困惑通过电子邮件发送给他们。谢谢,这很有帮助!我很难理解ob seqapplysub()的响应格式。我的问题是,当我检查subs对象时,它会显示count=6,但当我检查subs.pres对象时,它会打印一堆行(比计数多得多)。我更改了这行代码:subssequeaplysub
返回一个矩阵,每个原始序列有一行,搜索的每个子序列有一列(在上面的示例中有两个)。列中的1表示包含相应子序列的序列,0表示不包含相应子序列的序列。因此,sequefsub
(6,在您的情况下)返回的计数对应于列中的1个数。谢谢!有没有办法获取它们的索引?只需使用哪个
。例如,索引