我有一个数据集,其中包含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 2013 0.25
4 Belgium 2010 0.30
5 Belgium 2011 0.34
6 Belgium 2013 0.38
我想要的是:在每个Country
上为缺少的年份创建行,并估算Value
,使之为上一年的年份。
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
答案 0 :(得分:4)
这是complete
library(tidyverse)
complete(datos, Country, Year = min(Year):max(Year)) %>%
fill(Value)
答案 1 :(得分:1)
感谢@akrun的回答。但是,这对我的数据集无效,因为它太大了,fill()
扩展了数据集重复的Country-Years
组合,这对我来说没有意义。我在Google搜索中从软件包na.locf()
中遇到了zoo
,该软件包只是使用上一个或上一个观察值来填充缺失值。
library(tidyverse)
library(zoo)
complete(datos, Year = 2003:2016) %>%
na.locf()