Вы, вероятно, не должны использовать NA
таким образом. Он не позволяет таким функциям, как which
, sum
и cumsum
работать так, как вы этого хотите. В любом случае вам, скорее всего, не нужно отмечать первую строку новой страны, поскольку большинство функций R, которые вы будете использовать для анализа, могут группироваться по Country
без необходимости использования специального маркера, показывающего, где начинается каждая группа.
Ниже я изменяю NA
на что-то другое и делаю transition
фактором. Затем вы можете использовать cumsum
для создания нового столбца.
library(data.table)
setDT(df) # assuming your data is called df
# fix transition column
df[is.na(transition), transition := 90]
df[, transition := as.factor(transition)]
# create post_conflict column
df[, post_conflict := cumsum(transition == 3), by = Country]
# Country Year transition post_conflict
# 1: Afghanistan 1994 0 0
# 2: Afghanistan 1995 0 0
# 3: Afghanistan 1996 3 1
# 4: Afghanistan 1997 2 1
# 5: Afghanistan 1998 2 1
# 6: Albania 1994 90 0
# 7: Albania 1994 2 0