我正在创建一个数据框,其中包含从 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
我想插入行来完成数据集,例如2001 年、2002 年、2003 年、... 2007 年以及 2009 年和 2010 年德克萨斯州的零点。同样,除 2004 年之外的所有年份的亚利桑那州都为零。加利福尼亚州也是如此。
我怎样才能做到这一点?
最佳答案
您可以使用 tidyr::complete
用 2010:2010
填充缺失的年份 ( 0
) 和值.
library(tidyr)
DFfilled <- DF %>%
complete(states, years = 2000:2010,
fill = list(incidents = 0)) %>%
as.data.frame()
PS:
如果有年份
2010
的条目在您的数据中(现在最多只有 2008
),您可以使用 full_seq(years, 1)
而不是 2000:2010
.
关于r - 插入缺失的年份以完成 data.frame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49433148/