在 R 中转换和合并事件时间数据

Transforming and merging event time data in R

提问人:turtok 提问时间:11/13/2023 最后编辑:turtok 更新时间:11/16/2023 访问量:42

问:

假设我有一个包含一些事件时间数据的 data.frame

> example_data
  id start.f stop.f status.f start.r1 stop.r1 status.r1 start.r2 stop.r2 status.r2
1  1      0   10.0        1     0.00    2.00         1     0.00    1.00         1
2  1      0   10.0        1     2.00    5.00         1     1.00    3.00         1
3  1      0   10.0        1     5.00    8.00         1     3.00    6.00         1
4  1      0   10.0        1     8.00   10.00         0     6.00   10.00         0
5  2      0   10.9        1     0.00    2.18         1     0.00    1.09         1
6  2      0   10.9        1     2.18    5.45         1     1.09    3.27         1
7  2      0   10.9        1     5.45    8.72         1     3.27    6.54         1
8  2      0   10.9        1     8.72   10.90         0     6.54   10.90         0

对于特定的分析,我想将上面的数据转换为 data.frame(在下面的示例中仅针对一个 ID 完成):

> transformed_example_data
  id start stop status.f status.r1 status.r2 strata
1  1     0    1       0        0        1      1
2  1     1    2       0        1        0      2
3  1     2    3       0        0        1      3
4  1     3    5       0        1        0      4
5  1     5    6       0        0        1      5
6  1     6    8       0        1        0      6
7  1     8   10       1        0        0      7

如您所见,“开始”/“停止”变量被合并和排序。带有相应后缀的“status”变量指示事件是否发生。“strata”是每个人事件的简单枚举。

我尝试使用整洁的pivot_longer,但似乎无法正确理解它的功能,也无法找到一个可以适应的适当示例。

我似乎无法理解如何做到这一点,并恳请帮助。 该解决方案的性能理想,因为我有大量的数据集需要完成此过程。

需要注意的是,永远不可能同时发生两个事件。后缀“f”表示致命事件类型,“r1”和“r2”分别为循环事件类型。

R 合并 转换 生存分析

评论


答: 暂无答案