2017-11-21 7 views
1

のは、我々はこのような5種類のイベント/状態から構成シーケンス(AE)を持っているとしましょう:減少したアルファベットでseqdef状態オブジェクトのサブセットを作成します

library(TraMineR) 
data(actcal) 
actcal.seq <- seqdef(actcal, 13:24, alphabet=c("A","B","C","D","E") 

は、それが今actcal.seqのサブセットを作成することが可能ですたとえばイベントA、C、Eのみが含まれていますか?はいの場合、これはどのように行われますか?

説明:A、C、またはEを含むシーケンスを抽出したい場合は、BまたはDを含むシーケンスのいずれかが返されたシーケンスから削除される必要があります。例えば、シーケンスA-A-B-C-C-D-E-EをA-A-C-C-E-Eとして返すべきである。

説明2:入力シーケンスはalphabet=c("A","B","C","D","E")を使用する必要がありますが、変更されたシーケンスオブジェクトはalphabet=c("A","C","E")を使用する必要があります。要求されたようないくつかのより多くの例を以下に示す:

"A-B-C-D-E" => "A-C-E" 
"A-C-A-E" => "A-C-A-E" 
"B-D" => NA or "" 
"B-D-B-A-D" => "A" 

は、私は、データベースからのデータのサブセットを再読み込みすることなく、これを解決する方法上の任意の解決策を感謝します。

+0

あなたの期待することをより明確にして質問を明確にしてください。 BまたはDを含まない配列を抽出しますか?そうでなければ、あなたはBとDで何をしたいですか?それらをA、C、Eとして再現するか、欠損値として扱いますか? – Gilbert

+0

現在および希望の結果のサンプルデータを表示して質問を明確にしてください。 – Parfait

+0

私は質問を明確にし、異なる入力シーケンスのいくつかの例を追加しました。 –

答えて

1

状態BとDは、seqrecode関数を使用して、欠損として再コード化することができます。欠落に使用されるデフォルトシンボルは*です。あなたは明確なの配列のみをしたい場合、私は唯一の

(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 

を逃す含まれていることが不足している状態配列を除去する

actcal.rec.comp.seq <- seqdef(actcal.rec.seq, 
          left="DEL", gap="DEL", right="DEL", 
          missing="*", alphabet=c("A","C","E")) 

を削除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 

の唯一の最初の10個のシーケンスを使用して説明し、連続的な状態

seqdss(rec.seq) 
#  Sequence 
# 2103 A  
# 3972 C  
# 5238 C  
# 4977 C  
# 528 A 
+0

'seqrecode()'と 'seqdef()'と 'DEL'を使って問題を解決する方法についての素晴らしい説明に感謝します。 –

関連する問題