r语言 - 您如何准备用于各种规格的生存分析的纵向数据?



我有一个关于纵向研究分析和与R合作的问题。

我有以下数据格式:

ID Visit Behaviour Distance_to_first_visit_in_month
1    0      1                   0
1    1      1                   6
1    2      1                  12
1    3      1                  50
2    0      3                   0
2    1      3                   8
2    2      3                  16
2    3      3                  25
2    4      3                  40
2    5      3                  60
3    0      1                   0
3    1      1                   6
3    2      1                  12
3    3      3                  24
3    4      3                  30
3    5      3                  55

我需要以下格式的数据:

ID Visit Behaviour Distance_to_first_visit_in_month  Status 
1    0      1                   0                         0
2    0      3                   0                         1
3    3      3                   24                        1

如果一个人每次都有1,直到最后,他应该只被审查,因为研究已经完成。如果一个人第一次有 3,我需要Distance_to_to_first_visit_in_month,因为他在 Kapplan-Meyer 曲线中具有状态 1。

我试图过滤最大Distance_to_first_visit_in_month并获得行为。当我将数据转换为宽格式时,很容易获得这些数据。但是我无法得到Distance_to_first_visit_in_month当人 3 作为行为开始时或其他时间。

我有 300 个 ID,有时有 11 次访问,所以我无法准备数据手册。

你有想法吗?

提前谢谢你。 最佳克里斯蒂娜

由于您不解释如何将数据聚合到第二个数据集,因此我只能向您展示如何获取符合您条件的 ID 以及如何实现状态变量。请参阅此示例:

library(dplyr)
# get id's with only 1
id_list1 <- lapply(df %>% split(.$ID),function(x){
if(unique(x$ID)==1){
return(unique(x$ID))
}
}) %>%
unlist()
# get id's with 3 as first value
id_list3 <- lapply(df %>% split(.$ID),function(x){
if(x[x$Visit==0,"Behaviour"]==3){
return(unique(x$ID))
}
}) %>%
unlist()
df %>%
mutate(Status = ifelse(ID %in% id_list3,1,0)) %>%
mutate(new_dist = ifelse(!ID %in% id_list3,Distance_to_first_visit_in_month,NA))

请注意,您将在id_list1id_list3中获得命名向量。没有重复项,只有与元素匹配的元素名称。

你的意思是用"开头"访问编号 0 吗?否则,您将不得不调整x$Visit==0

相关内容

  • 没有找到相关文章

最新更新