Я бы хотел выбрать часть данных с помощью dplyr
для выполнения операции, но без сохранения выбора, для которого была выполнена операция.Моя база данных выглядит следующим образом:
country country-year year a b
1 France France2000 2000 NA NA
2 France France2001 2001 1000 1000
3 France France2002 2002 NA NA
4 France France2003 2003 1600 2200
5 France France2004 2004 NA NA
6 UK UK2000 2000 1000 1000
7 UK UK2001 2001 NA NA
8 UK UK2002 2002 NA NA
9 UK UK2003 2003 NA NA
10 UK UK2004 2004 NA NA
11 Germany UK2000 2000 NA NA
12 Germany UK2001 2001 NA NA
13 Germany UK2002 2002 NA NA
14 Germany UK2003 2003 NA NA
15 Germany UK2004 2004 NA NA
Как пример:
# I first select the group
df <- df %>%
group_by(country)%>%
Для этой группы я хочу интерполировать (только интерполировать!), Когда есть более 1 наблюдения, ноЯ не хочу удалять группы, в которых есть только 1 или менее наблюдений.
Мне было интересно, могу ли я выбрать страны, в которых n>1
и только для этих групп выполнить операцию:
mutate_at(vars(a:b),~na.fill(.x,c(NA, "extend", NA)))
Я также подумал о следующем, но не могу понять правильный синтаксис:
mutate_if(is.numeric,~if(n()>1 NA else na.fill(.x,c(NA, "extend", NA)))
Желаемый результат будет:
country country-year year a b
1 France France2000 2000 NA NA
2 France France2001 2001 1000 1000
3 France France2002 2002 **1300****1600**
4 France France2003 2003 1600 2200
5 France France2004 2004 NA NA
6 UK UK2000 2000 1000 1000
7 UK UK2001 2001 NA NA
8 UK UK2002 2002 NA NA
9 UK UK2003 2003 NA NA
10 UK UK2004 2004 NA NA
11 Germany UK2000 2000 NA NA
12 Germany UK2001 2001 NA NA
13 Germany UK2002 2002 NA NA
14 Germany UK2003 2003 NA NA
15 Germany UK2004 2004 NA NA
Есть предложения?