Date NewArea.km2 IDday
1 2018-03-01 152.3972 0
2 2018-03-15 152.3972 0
3 2018-04-01 152.3972 0
4 2018-04-15 152.3972 0
5 2018-05-01 152.3972 0
6 2018-05-15 152.3972 0
7 2018-06-01 152.3972 0
8 2018-06-10 152.3972 0
9 2018-06-15 152.3972 0
10 2018-06-20 152.3972 0
11 2018-06-21 152.3972 1
12 2018-06-22 152.3972 3
13 2018-06-23 152.3972 4
14 2018-06-24 152.3972 6
15 2018-06-25 152.3972 6
16 2018-06-26 152.3972 16
17 2018-06-27 152.3972 22
18 2018-06-28 152.3972 22
19 2018-06-29 152.3972 24
20 2018-06-30 152.3972 24
21 2018-07-01 152.3972 27
这是我拥有的数据的子集。正如您可能从标题中躲过的那样,我想在数据框中添加行,以便也包括缺失的日期(例如,2018-03-02、2018-03-03等)。其他两列最好是用NA填充,使新的第2行显示为
2 2018-03-02 NA NA
答案 0 :(得分:1)
我们可以使用complete
library(tidyr)
df1 %>%
complete(Date = seq(min(Date), max(date), by = '1 day'))
答案 1 :(得分:1)
这是base R
dfout <- `names<-`(data.frame(seq(range(df$Date)[1],range(df$Date)[2],by = "1 day"),NA,NA),names(df))
dfout[match(df$Date,dfout$Date),] <- df
如此
> head(dfout,20)
Date NewArea.km2 IDday
1 2018-03-01 152.3972 0
2 2018-03-02 NA NA
3 2018-03-03 NA NA
4 2018-03-04 NA NA
5 2018-03-05 NA NA
6 2018-03-06 NA NA
7 2018-03-07 NA NA
8 2018-03-08 NA NA
9 2018-03-09 NA NA
10 2018-03-10 NA NA
11 2018-03-11 NA NA
12 2018-03-12 NA NA
13 2018-03-13 NA NA
14 2018-03-14 NA NA
15 2018-03-15 152.3972 0
16 2018-03-16 NA NA
17 2018-03-17 NA NA
18 2018-03-18 NA NA
19 2018-03-19 NA NA
20 2018-03-20 NA NA
数据
df <- structure(list(Date = structure(c(17591, 17605, 17622, 17636,
17652, 17666, 17683, 17692, 17697, 17702, 17703, 17704, 17705,
17706, 17707, 17708, 17709, 17710, 17711, 17712, 17713), class = "Date"),
NewArea.km2 = c(152.3972, 152.3972, 152.3972, 152.3972, 152.3972,
152.3972, 152.3972, 152.3972, 152.3972, 152.3972, 152.3972,
152.3972, 152.3972, 152.3972, 152.3972, 152.3972, 152.3972,
152.3972, 152.3972, 152.3972, 152.3972), IDday = c(0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 3L, 4L, 6L, 6L, 16L,
22L, 22L, 24L, 24L, 27L)), row.names = c(NA, -21L), class = "data.frame")