簡體   English   中英

使用 tmerge 或 SurvSplit 重塑縱向數據集?

[英]Reshaping longitudinal dataset with tmerge or SurvSplit?

我正在嘗試使用時變協變量進行生存分析。 數據來自一項每年進行的縱向調查,我將其處理成如下所示:

id  event       end.time    income1      income2    income3     income4
1   1           3           8            10         13          8       
2   0           4           13           15         24          35

event 表示事件是否發生,end.time 是事件發生的時間,我在右邊的每個后續時間段都有隨時間變化的協變量。 因此,對於觀察 1,事件發生在第 3 年,在第 1 年,他們獲得了 8000 美元的收入,等等。對於觀察 2,事件被截尾,我們有直到第 4 年的數據(當研究結束)。

最后,我希望我的數據看起來像這樣:

id  st.time end.time    event   inc

1   0       1           0       8
1   1       2           0       10
1   2       3           1       13
2   0       1           0       13
2   1       2           0       15
2   2       3           0       24
2   3       4           0       35

我查看了 tmerge() 和 SurvSplit() 函數,但不確定如何在這種特定情況下應用它們。 似乎使用 SurvSplit(),我可以按年使用分割點,但不確定它將如何重塑時變協變量。

可能是使用通用重塑可能效果更好?

任何意見,將不勝感激。

可能進行一般重塑以及對dplyr進行一些操作會起作用。

library(dplyr)

df %>%
  tidyr::pivot_longer(cols = starts_with('income'), values_to = 'inc') %>%
  group_by(id) %>%
  slice(1:first(end.time)) %>%
  mutate(end.time = row_number(),
         st.time = end.time - 1,
         event = replace(event, -n(), 0)) %>%
  select(-name)


#     id event end.time   inc st.time
#  <int> <dbl>    <dbl> <int>   <dbl>
#1     1     0        1     8       0
#2     1     0        2    10       1
#3     1     1        3    13       2
#4     2     0        1    13       0
#5     2     0        2    15       1
#6     2     0        3    24       2
#7     2     0        4    35       3

數據

df <- structure(list(id = 1:2, event = 1:0, end.time = 3:4, income1 = c(8L, 
13L), income2 = c(10L, 15L), income3 = c(13L, 24L), income4 = c(8L, 
35L)), class = "data.frame", row.names = c(NA, -2L))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM