创建面板数据,填补年份之间的空白,并使用R在随后的年份中重复上一个值

创建面板数据,填补年份之间的空白,并使用R在随后的年份中重复上一个值,r,dplyr,panel-data,R,Dplyr,Panel Data,我有以下样本: 我试图将其转换为以下面板数据: 正如您在最后一张图中所看到的,我想重复同一个国家不同年份之间的数值,并重复后续年份直到2020年的最后数值 您可以使用网格。展开以获得所需的国家/地区/年份组合,然后将主数据框加入该网格,最后填充缺失的数据,确保过滤掉任何剩余的NAs 库(dplyr) 图书馆(tidyr) 面板% 左联合(df)%>% 按(国家)划分的组别%>% 填充(c(“id”、“区域代码”、“预POWL”)%>% 过滤器(!is.na(id))%>% as.data.f

我有以下样本:

我试图将其转换为以下面板数据:


正如您在最后一张图中所看到的,我想重复同一个国家不同年份之间的数值,并重复后续年份直到2020年的最后数值

您可以使用
网格。展开
以获得所需的国家/地区/年份组合,然后
将主数据框加入该网格,最后
填充
缺失的数据,确保过滤掉任何剩余的
NAs

库(dplyr)
图书馆(tidyr)
面板%
左联合(df)%>%
按(国家)划分的组别%>%
填充(c(“id”、“区域代码”、“预POWL”)%>%
过滤器(!is.na(id))%>%
as.data.frame()
结果如下:

panel
#>    year   country id regioncode  prespowl
#> 1  2011   Albania  1     Europe 0.1817557
#> 2  2012   Albania  1     Europe 0.1817557
#> 3  2013   Albania  1     Europe 0.1817557
#> 4  2014   Albania  1     Europe 0.1817557
#> 5  2015   Albania  1     Europe 0.1817557
#> 6  2016   Albania  1     Europe 0.1817557
#> 7  2017   Albania  1     Europe 0.1817557
#> 8  2018   Albania  1     Europe 0.1411482
#> 9  2019   Albania  1     Europe 0.1411482
#> 10 2020   Albania  1     Europe 0.1411482
#> 11 2016   Algeria  2     Africa 0.3837466
#> 12 2017   Algeria  2     Africa 0.3837466
#> 13 2018   Algeria  2     Africa 0.4837466
#> 14 2019   Algeria  2     Africa 0.4837466
#> 15 2020   Algeria  2     Africa 0.4837466
#> 16 1999 Argentina  3   Americas 0.2887138
#> 17 2000 Argentina  3   Americas 0.2887138
#> 18 2001 Argentina  3   Americas 0.2887138
#> 19 2002 Argentina  3   Americas 0.2887138
#> 20 2003 Argentina  3   Americas 0.2887138
#> 21 2004 Argentina  3   Americas 0.2887138
#> 22 2005 Argentina  3   Americas 0.2887138
#> 23 2006 Argentina  3   Americas 0.4322523
#> 24 2007 Argentina  3   Americas 0.4322523
#> 25 2008 Argentina  3   Americas 0.4322523
#> 26 2009 Argentina  3   Americas 0.4322523
#> 27 2010 Argentina  3   Americas 0.4322523
#> 28 2011 Argentina  3   Americas 0.4322523
#> 29 2012 Argentina  3   Americas 0.4322523
#> 30 2013 Argentina  3   Americas 0.5453171
#> 31 2014 Argentina  3   Americas 0.5453171
#> 32 2015 Argentina  3   Americas 0.5453171
#> 33 2016 Argentina  3   Americas 0.5453171
#> 34 2017 Argentina  3   Americas 0.5453171
#> 35 2018 Argentina  3   Americas 0.5453171
#> 36 2019 Argentina  3   Americas 0.5453171
#> 37 2020 Argentina  3   Americas 0.5453171

使用的数据:

df <- read.table(text= 'country year    id  regioncode   prespowl
                        Albania 2011    1   Europe      0.1817557
                        Albania 2018    1   Europe      0.1411482
                        Algeria 2016    2   Africa      0.3837466
                        Algeria 2018    2   Africa      0.4837466
                      Argentina 1999    3   Americas    0.2887138
                      Argentina 2006    3   Americas    0.4322523
                      Argentina 2013    3   Americas    0.5453171
', header = TRUE, stringsAsFactors = FALSE)

df您可以使用
网格。展开
以获得所需的国家/地区/年份组合,然后
将主数据框加入该组合,最后
填充
缺失的数据,确保过滤掉任何剩余的
NAs

库(dplyr)
图书馆(tidyr)
面板%
左联合(df)%>%
按(国家)划分的组别%>%
填充(c(“id”、“区域代码”、“预POWL”)%>%
过滤器(!is.na(id))%>%
as.data.frame()
结果如下:

panel
#>    year   country id regioncode  prespowl
#> 1  2011   Albania  1     Europe 0.1817557
#> 2  2012   Albania  1     Europe 0.1817557
#> 3  2013   Albania  1     Europe 0.1817557
#> 4  2014   Albania  1     Europe 0.1817557
#> 5  2015   Albania  1     Europe 0.1817557
#> 6  2016   Albania  1     Europe 0.1817557
#> 7  2017   Albania  1     Europe 0.1817557
#> 8  2018   Albania  1     Europe 0.1411482
#> 9  2019   Albania  1     Europe 0.1411482
#> 10 2020   Albania  1     Europe 0.1411482
#> 11 2016   Algeria  2     Africa 0.3837466
#> 12 2017   Algeria  2     Africa 0.3837466
#> 13 2018   Algeria  2     Africa 0.4837466
#> 14 2019   Algeria  2     Africa 0.4837466
#> 15 2020   Algeria  2     Africa 0.4837466
#> 16 1999 Argentina  3   Americas 0.2887138
#> 17 2000 Argentina  3   Americas 0.2887138
#> 18 2001 Argentina  3   Americas 0.2887138
#> 19 2002 Argentina  3   Americas 0.2887138
#> 20 2003 Argentina  3   Americas 0.2887138
#> 21 2004 Argentina  3   Americas 0.2887138
#> 22 2005 Argentina  3   Americas 0.2887138
#> 23 2006 Argentina  3   Americas 0.4322523
#> 24 2007 Argentina  3   Americas 0.4322523
#> 25 2008 Argentina  3   Americas 0.4322523
#> 26 2009 Argentina  3   Americas 0.4322523
#> 27 2010 Argentina  3   Americas 0.4322523
#> 28 2011 Argentina  3   Americas 0.4322523
#> 29 2012 Argentina  3   Americas 0.4322523
#> 30 2013 Argentina  3   Americas 0.5453171
#> 31 2014 Argentina  3   Americas 0.5453171
#> 32 2015 Argentina  3   Americas 0.5453171
#> 33 2016 Argentina  3   Americas 0.5453171
#> 34 2017 Argentina  3   Americas 0.5453171
#> 35 2018 Argentina  3   Americas 0.5453171
#> 36 2019 Argentina  3   Americas 0.5453171
#> 37 2020 Argentina  3   Americas 0.5453171

使用的数据:

df <- read.table(text= 'country year    id  regioncode   prespowl
                        Albania 2011    1   Europe      0.1817557
                        Albania 2018    1   Europe      0.1411482
                        Algeria 2016    2   Africa      0.3837466
                        Algeria 2018    2   Africa      0.4837466
                      Argentina 1999    3   Americas    0.2887138
                      Argentina 2006    3   Americas    0.4322523
                      Argentina 2013    3   Americas    0.5453171
', header = TRUE, stringsAsFactors = FALSE)

df try
complete()
fill()
如果需要更具体的帮助,请创建try
complete()
fill()
如果需要更具体的帮助,请创建