插入缺失的年份以完成 data.frame

wwl*_*wwl 5 r dataframe

我正在创建一个数据框,其中包含从 2000 年到 2010 年每个州每年发生的某种事件的数量(假设它们是枪支事件):

states <- c('Texas', 'Texas', 'Arizona', 'California', 'California')
incidents <- c(1, 1, 2, 1, 4)
years <- c(2000, 2008, 2004, 2002, 2007)

DF <- data.frame(states, incidents, years)

> DF
      states incidents years
1      Texas         1  2000
2      Texas         1  2008
3    Arizona         2  2004
4 California         1  2002
5 California         4  2007
Run Code Online (Sandbox Code Playgroud)

我想插入行来完成数据集,例如德克萨斯州 2001 年、2002 年、2003 年、... 2007 年以及 2009 年和 2010 年的零。同样,除了 2004 年之外,亚利桑那州的所有年份都为零。加利福尼亚也是如此。

我怎样才能做到这一点?

PoG*_*bas 6

您可以使用tidyr::complete来填充缺失的年份 ( 2010:2010) 和值0

library(tidyr)
DFfilled <- DF %>%
    complete(states, years = 2000:2010, 
             fill = list(incidents = 0)) %>%
    as.data.frame()
Run Code Online (Sandbox Code Playgroud)

PS:
如果2010您的数据中有带有年份的条目(现在只有2008),您可以使用full_seq(years, 1)代替2000:2010