У меня есть следующее df:
df <- tibble(country = c("US", "US", "US", "US", "US", "US", "US", "US", "US", "Mex", "Mex"),
year = c(1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2000, 2001),
score = c(NA, NA, NA, NA, 426, NA, NA, 430, NA, 450, NA))
Что я хотел бы сделать: создать новую переменную years_from_implementation
, которая будет 0 первый год, когда страна имеетне-NA значение для score
и представляет количество лет от 0 для всех других значений.
Другими словами, жестко закодировав его, я бы хотел вернуть следующееdf:
df <- tibble(country = c("US", "US", "US", "US", "US", "US", "US", "US", "US", "Mex", "Mex"),
year = c(1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2000, 2001),
score = c(NA, NA, NA, NA, 426, NA, NA, 430, NA, 450, NA),
years_from_implementation = c(-4,-3,-2,-1,0,1,2,3,4,0,1))
Это все сделано при группировании по country
.
Я попытался соединить df <- mutate(df, before_after = case_when(!is.na(score) ~ 0))
с помощью команды fill
, но не смог получить никакого движения.
Решения Tidyverse были бы очень предпочтительны, но действительно любая помощь будет высоко оценена.
Заранее спасибо!