r - 在某个键首次出现后,为当前没有数据的日期创建 0

标签 r loops date missing-data insert-update

我有一个如下所示的表格

<表类=“s-表”> <标题> 日期 键 公制 <正文> 2021-01-01 A 6 2021-02-01 A 3 2021-05-01 A 3 2021-03-01 B 4 2021-04-01 B 1 2021-05-01 B 2

我想要做的是在 2021 年 3 月 1 日的日期为 key A 插入一个指标为 0 的行,因为 key A 已经在 2 月的 1 月出现。

另一方面,键 B 最好保持不变,因为它具有与其出现后的每个日期相关的指标。 (我正在使用的表格恰好是每月的,但我确信我可以进行更改以使每日解决方案在这里发挥作用)

所以,理想情况下我们最终会得到一个如下所示的表格

<表类=“s-表”> <标题> 日期 键 公制 <正文> 2021-01-01 A 6 2021-02-01 A 3 2021-03-01 A 0 2021-04-01 A 0 2021-05-01 A 3 2021-03-01 B 4 2021-04-01 B 1 2021-05-01 B 2

我认为这可能更适合 SQL,但想尝试 R ——我应该沿着某个循环的路径检查每个键的第一个日期,检查它是否有以下条目日期,如果没有则添加?感觉这很快就会变得相当笨重。

暂时就这些,谢谢大家

最佳答案

分组后我们可以使用complete:

library(lubridate) # formatting date
library(dplyr)
df %>% 
  mutate(Date = as.Date(ydm(Date))) %>%  # you don't need this if your date is in correct format
  group_by(Key) %>% 
  complete(Date = seq(min(Date), max(Date), by = "1 day"),
           fill = list(Metric = 0))
  Key   Date       Metric
  <chr> <date>      <dbl>
1 A     2021-01-01      6
2 A     2021-01-02      3
3 A     2021-01-03      0
4 A     2021-01-04      0
5 A     2021-01-05      3
6 B     2021-01-03      4
7 B     2021-01-04      1
8 B     2021-01-05      2

关于r - 在某个键首次出现后,为当前没有数据的日期创建 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69654335/

相关文章:

javascript - 创建动态数组 Javascript

python - R 或 Python - 循环测试数据 - 接下来 24 小时的预测验证(每天 96 个值)

r - 设置要在输出中显示的小数位数

r - 如何在 R 中编写 Bootstrap Probit 模型的代码选择

javascript - 了解 JavaScript For 循环

r - 将月份的数字转换为月份名称

java - 毫秒至今 C++

php - 如何保存变量不显式的 PHP 字符串?

R:根据列名部分匹配计算行均值

r - 更改列名称和值