У меня есть база данных, подобная следующей:
score_df <- tibble(country = c("US", "US", "US", "US", "Mex", "Mex"),
year = c(2001, 2000, 1997, 2003, 1998, 2006),
perc = c(5, 6,8, 8, NA, 10),
score = c(NA, 400, NA, 423, 12, 18))
Я хочу создать новую переменную, year_1_score
, которая представляет счет ПЕРВОГО (не NA) года. Другими словами, year_1_score
должно быть заполнено для каждой строки и соответствует следующим критериям:
-Группы по стране
-Устраивает по годам
-Для каждой страны жест первый score
, который не является NA
-Вставляет это значение для всех ячеек в этой стране
Я бы хотел, чтобы финальный df выглядел так:
score_df <- tibble(country = c("US", "US", "US", "US", "Mex", "Mex"),
year = c(2001, 2000, 1997, 2003, 1998, 2006),
perc = c(5, 6,8, 8, NA, 10),
score = c(NA, 400, NA, 423, 12, 18),
year_1_score = c(400, 400, 400, 400, 12, 12))
Я попробовал следующие две попытки, но безрезультатно.
Попытка № 1:
score_df <- score_df %>%
group_by(country) %>%
arrange(year) %>%
mutate(yr_1_score = ifelse(year==min(year) & !is.na(score), score, NA)) %>%
ungroup()
Попытка № 2:
score_df <- score_df %>%
group_by(country) %>%
arrange(year) %>%
filter(!is.na(score)) %>%
slice(1) %>%
mutate(yr_1_score = score) %>%
ungroup()
Кто-нибудь способен взломать проблему? Решения, использующие dplyr, очень предпочтительны, но любая помощь будет высоко ценится!
Заранее спасибо!