【发布时间】:2021-11-02 03:06:06
【问题描述】:
我正在使用 R 分析来自动物收容所的数据。我有一个包含动物摄入量的数据集,以及另一个显示结果的数据集。我想合并这些数据集,以便每只动物的摄入信息和相应的结果信息都在同一行。
每个结果都有相应的较早摄入量。一些摄入量没有结果,因为这些动物仍在系统中。一只动物可以在系统中循环多次(例如,动物被送回收容所、领养、返回收容所、再次领养等)
数据框看起来像这样:
摄入量:
Animal.ID Intake.Date Intake.Type
A1 2016-01-01 Surrender
A2 2017-01-01 Stray
A1 2018-01-01 Surrender
A3 2019-01-01 Stray
A4 2020-01-01 Seized
A5 2021-01-01 Surrender
结果:
Animal.ID Outcome.Date Outcome.Type
A1 2016-06-30 Adoption
A2 2017-06-30 Euthanasia
A1 2018-06-30 Transfer
A3 2019-06-30 Adoption
A5 2021-06-30 Transfer
在我的示例中,Animal.ID 为“A1”的动物在系统中循环了两次。 Animal.ID为“A4”的动物没有结果记录,因为该动物仍在收容所的照料下。
如何组合(合并)数据集,以使生成的数据集看起来像这样?
综合:
Animal.ID Intake.Date Intake.Type Outcome.Date Outcome.Type
A1 2016-01-01 Surrender 2016-06-30 Adoption
A2 2017-01-01 Stray 2017-06-30 Euthanasia
A1 2018-01-01 Surrender 2018-06-30 Transfer
A3 2019-01-01 Stray 2019-06-30 Adoption
A4 2020-01-01 Seized <NA> <NA>
A5 2021-01-01 Surrender 2021-06-30 Transfer
我想这类问题在过去已经解决了,但我在运行 Google 搜索时一定没有使用正确的术语。
编辑:实际数据包含日期/时间(不仅仅是日期)。结果可能会在摄入后的几分钟内发生,也可能在数月后发生。
以下是创建这些示例数据集的代码:
intakes <- data.frame(
Animal.ID = c("A1","A2","A1","A3","A4","A5"),
Intake.Date = as.Date(c("2016-01-01","2017-01-01","2018-01-01","2019-01-01","2020-01-01","2021-01-01")),
Intake.Type = c("Surrender","Stray","Surrender","Stray","Seized","Surrender")
)
outcomes <- data.frame(
Animal.ID = c("A1","A2","A1","A3","A5"),
Outcome.Date = as.Date(c("2016-06-30","2017-06-30","2018-06-30","2019-06-30","2021-06-30")),
Outcome.Type = c("Adoption","Euthanasia","Transfer","Adoption","Transfer")
)
【问题讨论】: