2014-10-22 2 views
0

생존 분석 데이터를 시간에 따라 변하는 공변량을 허용하는 형식으로 가져 오는 가장 빠른 방법을 알아 내려고합니다. 기본적으로 이것은 Stata에서 stsplit의 python 구현이 될 것입니다. 정보의 다음 세트로, 간단한 예제를 제공합니다 :팬더를 이용한 생존 분석 데이터 형식

id start end x1 x2 exit 
1 0 18 12 11 1 

이 관찰 시간 0에서 시작하고, 18 번 출구이 잘 아닌 '죽음'이었다는 것을 우리에게 알려줍니다시에 종료라고 우리에게 이야기한다 검열. x1과 x2는 시간에 대해 일정한 변수입니다.

id t age 
1 0 30 
1 7 40 
1 17 50 

나는 좀하고 싶습니다 :

id start end x1 x2 exit age 
1 0 7 12 11 0 30 
1 7 17 12 11 0 40 
1 17 18 12 11 1 50 

종료가 t은 죽음이 발생했을 때 18 인 = 것을 의미 만 1 마지막이다.

+0

't' 열은 어디로 갔습니까? – elyase

+0

시작 및 끝 변경 내용이 포함됩니다. 본질적으로 시작은 이제 t입니다. – Luke

+0

종료를 위해 값 0,0,1을 얻는 방법은 무엇입니까? – elyase

답변

1

가정 :

>>> df1 
id start end x1 x2 exit 
0 1 0 18 12 11 1 

과 :

>>> df2 
    id t age 
0 1 0 30 
1 1 7 40 
2 1 17 50 

당신은 할 수 있습니다 :

df = df2.copy()         # start with df2 
df['x1'] = df1.ix[0, 'x1']      # x1 column 
df['x2'] = df1.ix[0, 'x2']      # x2 column 
df.rename(columns={'t': 'start'}, inplace=True) # start column 
df['end'] = df['start'].shift(-1)    # end column 
df.ix[len(df)-1, 'end'] = df1.ix[0, 'end'] 
df['exit'] = 0         # exit column 
df.ix[len(df)-1, 'exit'] = 1      
df = df[['id', 'start', 'end', 'x1', 'x2', 'exit', 'age']] # reorder columns 

출력 :

>>> df 
    id start end x1 x2 exit age 
0 1 0  7 12 11 0  30 
1 1 7  17 12 11 0  40 
2 1 17  18 12 11 1  50 
,
관련 문제