R 在数据帧中生成具有条件值的行

R 在数据帧中生成具有条件值的行,r,dplyr,tidyr,R,Dplyr,Tidyr,我有一个2010年至2013年的数据集。但是,如果没有给定年份的信息,则该行不存在,而不是NA行 datos <- data.frame(Country = c(rep("Australia", 3), rep("Belgium", 3)), Year = c(2010, 2011, 2013, 2010, 2011, 2013), Value = c(0.34, 0.35, 0.25, 0.30, 0.34, 0.38)) 我想要做的是:为每个国家/地区的缺失年

我有一个2010年至2013年的数据集。但是,如果没有给定年份的信息,则该行不存在,而不是
NA

datos <- data.frame(Country = c(rep("Australia", 3), rep("Belgium", 3)), 
     Year = c(2010, 2011, 2013, 2010, 2011, 2013), 
     Value = c(0.34, 0.35, 0.25, 0.30, 0.34, 0.38))
我想要做的是:为每个
国家/地区的缺失年份创建行,并计算
值,使之成为上一年的值

   Country   Year  Value
1 Australia 2010   0.34
2 Australia 2011   0.35
3 Australia 2012   0.35   #New row
4 Australia 2013   0.25
5   Belgium 2010   0.30
6   Belgium 2011   0.34
7   Belgium 2012   0.34   #New row
8   Belgium 2013   0.38

这里有一个选项带有
complete

library(tidyverse)
complete(datos, Country, Year = min(Year):max(Year)) %>% 
        fill(Value)

感谢@akrun的回答。但是,这在我的数据集上不起作用,因为它太大,
fill()
扩展了数据集,重复了
国家年份的组合,这对我来说没有意义。在谷歌上搜索时,我发现了来自
zoo
软件包的
na.locf()

library(tidyverse)
library(zoo)

complete(datos, Year = 2003:2016) %>%
na.locf()
library(tidyverse)
library(zoo)

complete(datos, Year = 2003:2016) %>%
na.locf()