插入行以填写 R 中缺失的日期

强宁101

我有一个看起来像这样的数据集:

Person   date     Amount
A       2019-01     900
A       2019-03     600
A       2019-04     300
A       2019-05       0
B       2019-04    1200
B       2019-07     800
B       2019-08     400
B       2019-09       0

正如您会在“日期”列中注意到的那样,缺少日期,例如人 A 的“2019-02”和人 B 的“2019-05”和“2019-06”。我想插入行缺失的日期和金额等于之前的日期(见下面的预期结果)。

我试过表演 group by 但我不知道如何从那里开始。我还尝试将“日期”和“金额”列转换为列表,然后在将它们放回数据框之前填补空白。我想知道是否有更方便的方法来做到这一点。特别是,无需从原始数据框中提取列表即可获得相同的结果。

理想情况下,我想要一个看起来像这样的数据框:

Person   date     Amount
A       2019-01     900
A       2019-02     900
A       2019-03     600
A       2019-04     300
A       2019-05       0
B       2019-04    1200
B       2019-05    1200
B       2019-06    1200
B       2019-07     800
B       2019-08     400
B       2019-09       0

我希望我能把我的问题说清楚。提前致谢。

罗纳克·沙阿

我们可以首先date1通过"-01"在末尾粘贴将日期转换为实际日期对象 ( ) ,然后使用complete我们为每个Person. 然后我们使用fill获得Amount等于它之前的一个,并以我们"-01"再次从 中删除的原始形式获取数据date1

library(dplyr)
library(tidyr)

df %>%
  mutate(date1 = as.Date(paste0(date, "-01"))) %>%
  group_by(Person) %>%
  complete(date1 = seq(min(date1), max(date1), by = "1 month")) %>%
  fill(Amount) %>%
  mutate(date = sub("-01$", "", date1)) %>%
  select(-date1)

#  Person date    Amount
#  <fct>  <chr>    <int>
# 1 A      2019-01    900
# 2 A      2019-02    900
# 3 A      2019-03    600
# 4 A      2019-04    300
# 5 A      2019-05      0
# 6 B      2019-04   1200
# 7 B      2019-05   1200
# 8 B      2019-06   1200
# 9 B      2019-07    800
#10 B      2019-08    400
#11 B      2019-09      0

数据

df <- structure(list(Person = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 
2L), .Label = c("A", "B"), class = "factor"), date = structure(c(1L, 
2L, 3L, 4L, 3L, 5L, 6L, 7L), .Label = c("2019-01", "2019-03", 
"2019-04", "2019-05", "2019-07", "2019-08", "2019-09"), class = "factor"), 
Amount = c(900L, 600L, 300L, 0L, 1200L, 800L, 400L, 0L)), 
class = "data.frame", row.names = c(NA, -8L))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为R中的缺失数据插入行-数量为0

来自分类Dev

在为R中的日期制作表格时,如何填写缺失的日期以使其频率为0?

来自分类Dev

在为R中的日期制作表格时,如何填写缺失的日期以使其频率为0?

来自分类Dev

填写R中的缺失值

来自分类Dev

填写Google表格中的缺失日期

来自分类Dev

将R中的缺失日期转换为缺失

来自分类Dev

用R中的特定列填充缺失值的缺失日期

来自分类Dev

在R中插入行,以另一列扩大日期范围

来自分类Dev

如何在R的数据框中插入行较少的列

来自分类Dev

根据 R 中现有行的值插入行

来自分类Dev

填写R中数据框中列的缺失字段

来自分类Dev

用R中的连续记录填写缺失值?

来自分类Dev

如何在R中填写data.frame的缺失值?

来自分类Dev

如何在R中填写地图的白色/缺失部分?

来自分类Dev

使用均值填写数据框中的缺失日期

来自分类Dev

在熊猫数据框中以间隔的日期填写缺失的观测值

来自分类Dev

在原始SQL查询的结果中填写空缺失的日期

来自分类Dev

填写熊猫中每个组的缺失日期和回填值

来自分类Dev

R按顺序插入行

来自分类Dev

MySQL-填写缺失的日期

来自分类Dev

MySQL-填写缺失的日期

来自分类Dev

SQL Server查询-使用Tally表在SQL中按日期排序的日期中填写缺失的日期

来自分类Dev

MySQL插入行与日期

来自分类Dev

获取插入行的日期MySQL

来自分类Dev

如何使用参考表在R中的数据框中插入行?

来自分类Dev

如何使用参考表在R中的数据框中插入行?

来自分类Dev

在VBA Excel中插入行

来自分类Dev

在表格中插入行号

来自分类Dev

在文件中插入行号