我已经将这两个代码建议应用于我的原始数据集,以比较和平1和和平2.
和平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)
和平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)
结果:
country | year | conflict | peace1 | peace2 |
---|---|---|---|---|
Iran | 1946 | 0 | -73 | 0 |
Iran | 1947 | 0 | -72 | 1 |
Iran | 1948 | 0 | -71 | 2 |
Iran | 1949 | 0 | -70 | 3 |
Iran | 1950 | 0 | -69 | 4 |
Iran | 1951 | 0 | -68 | 5 |
Iran | 1952 | 0 | -67 | 6 |
Iran | 1953 | 0 | -66 | 7 |
Iran | 1954 | 0 | -65 | 8 |
Iran | 1955 | 0 | -64 | 9 |
Iran | 1956 | 0 | -63 | 10 |
Iran | 1957 | 0 | -62 | 11 |
Iran | 1958 | 0 | -61 | 12 |
Iran | 1959 | 0 | -60 | 13 |
Iran | 1960 | 0 | -59 | 14 |
Iran | 1961 | 0 | -58 | 15 |
Iran | 1962 | 0 | -57 | 16 |
Iran | 1963 | 0 | -56 | 17 |
Iran | 1964 | 0 | -55 | 18 |
Iran | 1965 | 0 | -54 | 19 |
Iran | 1966 | 1 | -1 | 0 |
Iran | 1967 | 0 | 0 | 1 |
Iran | 1968 | 0 | 1 | 2 |
Iran | 1969 | 0 | 2 | 3 |
Iran | 1970 | 0 | 3 | 4 |
Iran | 1971 | 0 | 4 | 5 |
Iran | 1972 | 0 | 5 | 6 |
Iran | 1973 | 0 | 6 | 7 |
Iran | 1974 | 0 | 7 | 8 |
Iran | 1975 | 0 | 8 | 9 |
Iran | 1976 | 0 | 9 | 10 |
Iran | 1977 | 0 | 10 | 11 |
Iran | 1978 | 0 | 11 | 12 |
Iran | 1979 | 1 | -1 | 0 |
Iran | 1980 | 0 | 0 | 1 |
Iran | 1981 | 0 | 1 | 2 |
Iran | 1982 | 0 | 2 | 3 |
Iran | 1983 | 0 | 3 | 4 |
Iran | 1984 | 0 | 4 | 5 |
Iran | 1985 | 0 | 5 | 6 |
Iran | 1986 | 1 | -1 | 0 |
Iran | 1987 | 0 | 0 | 1 |
Iran | 1988 | 0 | 1 | 2 |
Iran | 1989 | 0 | 2 | 3 |
Iran | 1990 | 1 | -1 | 0 |
Iran | 1991 | 1 | -1 | 0 |
Iran | 1992 | 0 | 0 | 1 |
Iran | 1993 | 1 | -1 | 0 |
Iran | 1994 | 0 | 0 | 1 |
Iran | 1995 | 0 | 1 | 2 |
Iran | 1996 | 1 | -1 | 0 |
Iran | 1997 | 1 | -1 | 0 |
Iran | 1998 | 0 | 0 | 1 |
Iran | 1999 | 1 | -1 | 0 |
Iran | 2000 | 0 | 0 | 1 |
Iran | 2001 | 0 | 1 | 2 |
Iran | 2002 | 0 | 2 | 3 |
Iran | 2003 | 0 | 3 | 4 |
Iran | 2004 | 0 | 4 | 5 |
Iran | 2005 | 1 | -1 | 0 |
Iran | 2006 | 0 | 0 | 1 |
Iran | 2007 | 0 | 1 | 2 |
Iran | 2008 | 0 | 2 | 3 |
Iran | 2009 | 0 | 3 | 4 |
Iran | 2010 | 0 | 4 | 5 |
Iran | 2011 | 0 | 5 | 6 |
Iran | 2012 | 0 | 6 | 7 |
Iran | 2013 | 0 | 7 | 8 |
Iran | 2014 | 0 | 8 | 9 |
Iran | 2015 | 0 | 9 | 10 |
Iran | 2016 | 1 | -1 | 0 |
Iran | 2017 | 1 | -1 | 0 |
Iran | 2018 | 1 | -1 | 0 |
两个密码都不符合我的条件.
- 和平年限的累积必须延续到冲突年.并且不设置为0.
- 冲突一年后的一年必须以和平开始== 0.就像和平1的功能一样正确.