2013-01-09 3 views
4

상태 기반 시퀀스에서 천이 기반 시퀀스 만들기
df <- data.frame(
t1=c("e","e","e"),t2=c("e","e","u"),t3=c("e","e","u"),t4=c("e","u","e"),t5=c("e","u","e"))
I 순차 된 데이터를 가진 데이터 프레임이

I 상태 서열이 데이터 프레임을 변환하고자

> df 
    t1 t2 t3 t4 t5 
1 e e e e e 
2 e e e u u 
3 e u u e e 

같다

> dfNew 
    t1 t2 t3 t4 t5 
1 se ee ee ee ee 
2 se ee ee eu uu 
3 se eu uu ue ee 

"s"는 시작 상태를 나타내는 데이터 프레임으로 변환한다.

귀하의 도움에 감사드립니다.

답변

5

seqtrate이 transistions의 데이터 프레임 만드는 방법 사용하는 사이에 당신이 전환 속도를 원하는 경우 :

setNames(as.data.frame(t(apply(df, 1, 
           function(x) 
           paste(c("s", head(x, -1)), x, sep = "")))), 
                     names(df)) 

    t1 t2 t3 t4 t5 
1 se ee ee ee ee 
2 se ee ee eu uu 
3 se eu uu ue ee 
+0

'paste (c ("s", head (x, -1)), x, sep = "")가 내 질문에 더 적합하다고 생각됩니다. 대단히 감사합니다 !!! – POTENZA

+0

@POTENZA 죄송합니다. 해결되었습니다. –

3

TraMineR::seqetm

data(actcal) 
actcal.seq <- seqdef(actcal,13:24, 
     labels=c("FullTime", "PartTime", "LowPartTime", "NoWork")) 

내 예에서 예시적인 데이터를 사용하여이 서열을 만들 seqconc 사용 print.stslist의 출력으로 나타나는

그래서이 시퀀스를 생성한다 manaully

actcal.seqconc <- seqconc(actcal.seq) 

이것은 매트릭스입니다. 따라서 우리는이 함수를 -에서 분리하기 위해 적용한 다음 원하는대로 전환 상태와 재결합 할 수 있습니다. 이 작업을 수행하는 함수는 다음과 같습니다 :

transitions <- function(x, start = 'S') { 

x <- unlist(strsplit(x, '-') 
paste0(c(start, head(x, -1)), x, collapse = '-') 
} 

actcal.tseq <- as.matrix(apply(actcal.seqconc, 1, transitions)) 

상태가 여기에

seqtrate(actcal.seq) 
[>] computing transition rates for states A/B/C/D ... 
      [-> A]  [-> B]  [-> C]  [-> D] 
[A ->] 0.986991870 0.005203252 0.001084011 0.006720867 
[B ->] 0.009700665 0.970343681 0.007760532 0.012195122 
[C ->] 0.005555556 0.014814815 0.934259259 0.045370370 
[D ->] 0.008705580 0.006279435 0.014985015 0.970029970 
+0

감사를 당신을 도와 주겠지 만, 당신의 기능은 나에게 내가 원하는 올바른 "전환 지향적"시퀀스를 제공하지 못했습니다. 예를 들어, 함수가 SB-SB-SB-SB-SB 등과 같은 새 시퀀스를 생성했습니다. 의견 있으십니까? – POTENZA

+0

@ 포텐 자, 무슨 뜻인지 알 겠어. 내 편집을 참조하십시오. – mnel

+0

코드 이해에 어려움을 겪었습니다. 특히 lapply와 apply에 관한 문제가있었습니다. 나는 나의 질문을 다시 편집했다. 가능한 경우, 제 예제를 기반으로 코드를 만들 수 있습니까? 대단히 감사드립니다. – POTENZA

관련 문제