我想为大型数据集中的缺失日期生成空行 (NA)。对于上下文,这是一个大型数据集,其中每个人 (ID) 都有不同年份的数据。
这是两个人的数据的简化版本:
table <- "ID Date dist.km
1 1 2007-10-15 15147
2 1 2007-10-16 15156
3 1 2007-10-17 15173
4 1 2007-10-18 15185
5 1 2007-10-19 15194
6 1 2007-10-25 15202
7 1 2007-10-26 15216
8 1 2007-10-27 15240
9 1 2007-10-28 15270
10 1 2007-10-29 15290
11 2 2008-10-15 15147
12 2 2008-10-16 15156
13 2 2008-10-17 15173
14 2 2008-10-18 15185
15 2 2008-10-19 15194
16 2 2008-10-20 15202
17 2 2008-10-21 15216
18 2 2008-10-29 15240
19 2 2008-10-30 15270
20 2 2008-10-31 15290"
#Create a dataframe with the above table
df <- read.table(text=table, header = TRUE)
df
我第一次尝试使用complete(),在这里:
library(tidyverse)
newdat <- complete(df, ID, Date)
newdat
其输出是原始数据集,其中包含数据集日期范围之外的所有日期的 NA 值。所以,有些日期没有填写。例如,2007-10-20 到 2007-10-24 没有填写 ID 1。所以基本上它是在我的距离数据日期范围之外的日期填写 NA 值,但不在其中。
然后我尝试了这种格式:
library(dplyr)
library(tidyr)
newdat2 <- dat %>% group_by(ID) %>%
complete(Date = seq.Date(min(Date), max(Date), by = "day"))
newdat2
这有效,但这不会产生每个 ID 日期范围之外的日期。因此,每种格式都会产生相反的结果。我希望在每个 ID 的日期范围结束时至少获得一个 NA 以显示该集合的结束。如果这不能使用 来完成complete(),也许我的问题是:如何在我的数据集的每一年的特定日期添加一个空白的 NA 单元格?所有数据集从 10-15 开始,到 02-15 结束。那么,如何为每个 ID 每年为 02-16 添加一个 NA 单元格?
任何帮助,将不胜感激。