我已将这两个代码建议应用到我的原始数据集来比较peace1 和peace2。
和平1:
d_muslim <- d_muslim %>%
mutate(last_conflict = lag(if_else(conflict == 1, year,NA),default = min(year) - 1),
.by = country) %>%
tidyr::fill(last_conflict, .direction = "down") %>%
mutate(peace1 = year - last_conflict - 1)
Run Code Online (Sandbox Code Playgroud)
和平2:
d_muslim <- d_muslim %>%
mutate(helper = cumsum(lag(conflict, default = 1) == 1),.by = country) %>%
mutate(peace2 = year - first(year), .by = c(country, helper)) %>%
select(-helper)
Run Code Online (Sandbox Code Playgroud)
结果:
| 国家 | 年 | 冲突 | 和平1 | 和平2 |
|---|---|---|---|---|
| 伊朗 | 1946年 | 0 | -73 | 0 |
| 伊朗 | 1947年 | 0 | -72 | 1 |
| 伊朗 | 1948年 | 0 | -71 … |