Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用简化的字母表创建seqdef状态对象的子集_R_Traminer - Fatal编程技术网

R 使用简化的字母表创建seqdef状态对象的子集

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

假设我们有由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.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