R 使用简化的字母表创建seqdef状态对象的子集
假设我们有由5个不同事件/状态(A-E)组成的序列,如下所示:R 使用简化的字母表创建seqdef状态对象的子集,r,traminer,R,Traminer,假设我们有由5个不同事件/状态(A-E)组成的序列,如下所示: library(TraMineR) data(actcal) actcal.seq <- seqdef(actcal, 13:24, alphabet=c("A","B","C","D","E") 我将非常感谢任何解决方案,即如何解决此问题,而不必从数据库中重新读取数据子集。您可以通过seqrecode功能将状态B和D重新编码为缺失状态。用于缺少的默认符号是*。我仅使用actcal data(actcal) actcal.s
library(TraMineR)
data(actcal)
actcal.seq <- seqdef(actcal, 13:24, alphabet=c("A","B","C","D","E")
我将非常感谢任何解决方案,即如何解决此问题,而不必从数据库中重新读取数据子集。您可以通过
seqrecode
功能将状态B和D重新编码为缺失状态。用于缺少的默认符号是*
。我仅使用actcal
data(actcal)
actcal.seq <- seqdef(actcal[1:10,13:24], alphabet=c("A","B","C","D","E"))
## Recode B and D as *, the default missing symbol
actcal.rec.seq <- seqrecode(actcal.seq,
recodes = list("*"=c("B","D")), otherwise=NULL)
actcal.seq
# Sequence
# 2848 B-B-B-B-B-B-B-B-B-B-B-B
# 1230 D-D-D-D-A-A-A-A-A-A-A-D
# 2468 B-B-B-B-B-B-B-B-B-B-B-B
# 654 C-C-C-C-C-C-C-C-C-B-B-B
# 6946 A-A-A-A-A-A-A-A-A-A-A-A
# 1872 D-B-B-B-B-B-B-B-B-B-B-B
# 2905 D-D-D-D-D-D-D-D-D-D-D-D
# 106 A-A-A-A-A-A-A-A-A-A-A-A
# 5113 A-A-A-A-A-A-A-A-A-A-A-A
# 4503 A-A-A-A-A-A-A-A-A-A-A-A
actcal.rec.seq
# Sequence
# 2848 *-*-*-*-*-*-*-*-*-*-*-*
# 1230 *-*-*-*-A-A-A-A-A-A-A-*
# 2468 *-*-*-*-*-*-*-*-*-*-*-*
# 654 C-C-C-C-C-C-C-C-C-*-*-*
# 6946 A-A-A-A-A-A-A-A-A-A-A-A
# 1872 *-*-*-*-*-*-*-*-*-*-*-*
# 2905 *-*-*-*-*-*-*-*-*-*-*-*
# 106 A-A-A-A-A-A-A-A-A-A-A-A
# 5113 A-A-A-A-A-A-A-A-A-A-A-A
# 4503 A-A-A-A-A-A-A-A-A-A-A-A
请更明确地说明您的期望,以澄清您的问题。是否要提取不包含任何B或D的序列?否则,你想对B和D做什么?将其重新编码为A、C或E或将其视为缺失值?请通过显示当前结果和所需结果的样本数据来澄清您的问题。我已经澄清了问题,并添加了一些不同输入序列的示例以及所需的结果。太好了,感谢您对如何使用
seqrecode()解决问题的精彩描述
和seqdef()
与DEL
。
data(actcal)
actcal.seq <- seqdef(actcal[1:10,13:24], alphabet=c("A","B","C","D","E"))
## Recode B and D as *, the default missing symbol
actcal.rec.seq <- seqrecode(actcal.seq,
recodes = list("*"=c("B","D")), otherwise=NULL)
actcal.seq
# Sequence
# 2848 B-B-B-B-B-B-B-B-B-B-B-B
# 1230 D-D-D-D-A-A-A-A-A-A-A-D
# 2468 B-B-B-B-B-B-B-B-B-B-B-B
# 654 C-C-C-C-C-C-C-C-C-B-B-B
# 6946 A-A-A-A-A-A-A-A-A-A-A-A
# 1872 D-B-B-B-B-B-B-B-B-B-B-B
# 2905 D-D-D-D-D-D-D-D-D-D-D-D
# 106 A-A-A-A-A-A-A-A-A-A-A-A
# 5113 A-A-A-A-A-A-A-A-A-A-A-A
# 4503 A-A-A-A-A-A-A-A-A-A-A-A
actcal.rec.seq
# Sequence
# 2848 *-*-*-*-*-*-*-*-*-*-*-*
# 1230 *-*-*-*-A-A-A-A-A-A-A-*
# 2468 *-*-*-*-*-*-*-*-*-*-*-*
# 654 C-C-C-C-C-C-C-C-C-*-*-*
# 6946 A-A-A-A-A-A-A-A-A-A-A-A
# 1872 *-*-*-*-*-*-*-*-*-*-*-*
# 2905 *-*-*-*-*-*-*-*-*-*-*-*
# 106 A-A-A-A-A-A-A-A-A-A-A-A
# 5113 A-A-A-A-A-A-A-A-A-A-A-A
# 4503 A-A-A-A-A-A-A-A-A-A-A-A
actcal.rec.comp.seq <- seqdef(actcal.rec.seq,
left="DEL", gap="DEL", right="DEL",
missing="*", alphabet=c("A","C","E"))
(rec.seq <- actcal.rec.comp.seq[!is.na(seqdur(actcal.rec.comp.seq)[,1]),])
# Sequence
# 2103 A-A-A-A-A-A-A-A-A-A-A-A
# 3972 C-C-C-C-C-C-C-C-C
# 5238 C
# 4977 C-C-C-C-C-C-C-C-C-C-C-C
# 528 A-A-A-A-A-A-A-A-A-A-A-A
seqdss(rec.seq)
# Sequence
# 2103 A
# 3972 C
# 5238 C
# 4977 C
# 528 A