【发布时间】:2021-05-03 09:30:24
【问题描述】:
我正在处理如下所示的面板数据:
d <- data.frame(id = c("a", "a", "a", "a", "a", "b", "b", "b", "b", "b", "c", "c", "c", "c", "c"),
time = c(1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5),
iz = c(0,1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1))
id time iz
1 a 1 0
2 a 2 1
3 a 3 1
4 a 4 0
5 a 5 0
6 b 1 0
7 b 2 0
8 b 3 0
9 b 4 0
10 b 5 1
11 c 1 0
12 c 2 0
13 c 3 0
14 c 4 1
15 c 5 1
这里 iz 是事件或治疗的指标 (iz = 1)。我需要的是一个变量,它计算事件前后的时间段或事件的距离。这个变量看起来像这样:
id time iz nvar
1 a 1 0 -1
2 a 2 1 0
3 a 3 1 0
4 a 4 0 1
5 a 5 0 2
6 b 1 0 -4
7 b 2 0 -3
8 b 3 0 -2
9 b 4 0 -1
10 b 5 1 0
11 c 1 0 -1
12 c 2 0 -2
13 c 3 0 -3
14 c 4 1 0
15 c 5 1 0
我尝试使用here 和here 给出的答案,但在我的情况下无法使用。
我非常感谢任何解决此问题的想法。提前感谢您的所有想法和建议。
【问题讨论】:
-
每个
id是否只有一个事件/治疗?如果不是,并且可能有多个事件,您希望如何在事件之间处理nvar? -
抱歉没有澄清。理想情况下,此类观察将被视为“后”观察。我在下面尝试了机器人示例,Grothediecks 的回答就是这样做的,而 Wimpels 的回答将它们视为“pre”。
标签: r tidyverse panel-data