【发布时间】:2023-01-25 20:59:13
【问题描述】:
我有以下数据框 df(dput 下面):
group date1 date2 value
1 A 2022-01-01 2022-01-07 NA
2 A 2022-01-02 2022-01-07 1
3 A 2022-01-04 2022-01-07 NA
4 A 2022-01-10 2022-01-07 NA
5 B 2022-01-01 2022-01-06 3
6 B 2022-01-03 2022-01-06 NA
7 B 2022-01-04 2022-01-06 NA
8 B 2022-01-06 2022-01-06 NA
9 C 2022-01-01 2022-01-09 NA
10 C 2022-01-03 2022-01-09 NA
11 C 2022-01-04 2022-01-09 2
12 C 2022-01-11 2022-01-09 NA
我想在 date2 之前填写每组的 NA 值。因此,如果 date1 较小,则应填充第一行(值为 1 的 A 组)之后的所有 NA 值,直到 date2。这是所需的输出:
group date1 date2 value
1 A 2022-01-01 2022-01-07 NA
2 A 2022-01-02 2022-01-07 1
3 A 2022-01-04 2022-01-07 1
4 A 2022-01-10 2022-01-07 NA
5 B 2022-01-01 2022-01-06 3
6 B 2022-01-03 2022-01-06 3
7 B 2022-01-04 2022-01-06 3
8 B 2022-01-06 2022-01-06 3
9 C 2022-01-01 2022-01-09 NA
10 C 2022-01-03 2022-01-09 NA
11 C 2022-01-04 2022-01-09 2
12 C 2022-01-11 2022-01-09 NA
正如您在 A 组中看到的那样,只有下一行填充了 1,因为最后一个日期 1 在日期 2 之后。所以我想知道是否有人知道如何根据每个组的特定日期填写 NA?
dputdf:
df<-structure(list(group = c("A", "A", "A", "A", "B", "B", "B", "B",
"C", "C", "C", "C"), date1 = c("2022-01-01", "2022-01-02", "2022-01-04",
"2022-01-10", "2022-01-01", "2022-01-03", "2022-01-04", "2022-01-06",
"2022-01-01", "2022-01-03", "2022-01-04", "2022-01-11"), date2 = c("2022-01-07",
"2022-01-07", "2022-01-07", "2022-01-07", "2022-01-06", "2022-01-06",
"2022-01-06", "2022-01-06", "2022-01-09", "2022-01-09", "2022-01-09",
"2022-01-09"), value = c(NA, 1, NA, NA, 3, NA, NA, NA, NA, NA,
2, NA)), class = "data.frame", row.names = c(NA, -12L))
【问题讨论】: