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

标签 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

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

我怎样才能做到这一点?

最佳答案

您可以使用 tidyr::complete2010: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/

相关文章:

具有分组依据和条件的 Python Pandas 新数据框列

r - 将数据帧列表传递到循环中以同时组合和更改标题

r - 列出 CRAN 上的所有功能

R read.csv 如何忽略回车?

r - 使用 "mirror"观测值扩展数据框

r - 如何在 R 中的 ggplot 的一个图中绘制 2 个不同 y 轴上的两个列向量?

scala - 如何调用在 Scala 数据框中返回 int 的函数并将其附加

r - 为什么我的用于过滤数据的 R 代码会产生不同的结果 "fread()"和 "ffdf()"?

r - 编写一个函数来计算 R 中数据帧中列的平均值

r - 创建差异列