【发布时间】:2021-06-24 16:54:41
【问题描述】:
我想根据一个 ID 变量加入两个时间序列。
我的第一个时间系列,
library(tidyverse)
library(lubridate)
id <- c(11, 11, 11, 12, 12)
time <- c("2020-11", "2020-12", "2021-01", "2020-12", "2021-01")
values <- c(10, 20, 25, 100, 200)
data1 <- data.frame(id, time, values)
data1$time <- ym(data1$time)
第二个时间序列如下,
time <- c("2020-10", "2020-11", "2020-12", "2021-01", "2020-12", "2021-01", "2021-02")
trend <- c(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7)
data2 <- data.frame(Time, trend)
data2$time <- ym(data2$time)
注意,第一个数据框有 5 行,第二个有 7 行。连接的数据框应该有 5 行。
现在我想通过 id 和日期将第二个数据框加入第一个数据框。我正在执行以下操作,
newdata <- dplyr::inner_join(data1, data2, by = "time")
newdata
> newData
id Time values trend
1 11 2020-11-01 10 0.2
2 11 2020-12-01 20 0.3
3 11 2020-12-01 20 0.5
4 11 2021-01-01 25 0.4
5 11 2021-01-01 25 0.6
6 12 2020-12-01 100 0.3
7 12 2020-12-01 100 0.5
8 12 2021-01-01 200 0.4
9 12 2021-01-01 200 0.6
这不是我想要的。 id中有重复。数据框有 9 行而不是 5 行。我的预期输出应该是这样的,
> newData
id time values trend
1 11 2020-11-01 10 0.2
2 11 2020-12-01 20 0.3
3 11 2021-01-01 25 0.4
4 12 2020-12-01 100 0.3
5 12 2021-01-01 200 0.4
知道如何实现吗?
【问题讨论】: