【问题标题】:R - Create Event Time variableR - 创建事件时间变量
【发布时间】:2022-11-13 10:41:28
【问题描述】:

我正在使用看起来像这样的面板数据。

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, 1, 1, 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

现在我想创建一个事件时间指示器来测量自第一个事件以来的时间,如下所示。

  id time iz nvar
1   a    1  0   -1
2   a    2  1    0
3   a    3  1    1
4   a    4  1    2
5   a    5  1    3
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    1

我已经尝试了下面发布的链接中的解决方案,但无法使其适用于我的情况。尤其是我很难按上述规定计算事件发生后的时间。如果您对我应该尝试什么有任何建议,请告诉我。

Create a time to and time after event variables

【问题讨论】:

  • 对于 c 'id' 我猜你在预期的输出中有错字,因为它不符合你用于 'b' 或 'a' id 的逻辑

标签: r statistics regression panel panel-data


【解决方案1】:

我们可以从每个“id”的第一个matching 索引中减去行序列(row_number())(按 id 分组)

library(dplyr)
d <- d %>% 
   group_by(id) %>%
   mutate(nvar = row_number() - match(1, iz)) %>%
   ungroup

-输出

d
# A tibble: 15 × 4
   id     time    iz  nvar
   <chr> <dbl> <dbl> <int>
 1 a         1     0    -1
 2 a         2     1     0
 3 a         3     1     1
 4 a         4     1     2
 5 a         5     1     3
 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    -3
12 c         2     0    -2
13 c         3     0    -1
14 c         4     1     0
15 c         5     1     1

【讨论】:

    猜你喜欢
    • 2016-07-09
    • 2021-05-03
    • 1970-01-01
    • 2022-12-14
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多