我需要连接/合并两个频率和长度不同的数据帧df1
和df2
。在这些数据帧中,日期对应于值(值1和值2(的更改日期。
数据帧为:
State <- c(A,A,A,B,B,B)
Date1 <- c(01/01/2015, 02/04/2015, 12/01/2016, 03/02/2015, 02/05/2015, 25/01/2016)
Date2 <- C(01/02/2013, 01/04/2015, 19/07/2013, 23/01/2016)
value1 <- c(2.5, 3.2, 2.7, 3.1, 3.6, 2.8)
value2 <- c(0.12, 0.25, 0.2, 0.3)
df1 <- data.frame(State, Date1, value1)
df2 <- data.frame(State, Date2, value2)
然后我们有:
State Date1 Value1
A 01/01/2015 2.5
A 02/04/2015 3.2
A 12/01/2016 2.7
B 03/02/2015 3.1
B 02/05/2015 3.6
B 25/01/2016 2.8
State Date2 Value2
A 01/02/2013 0.12
A 01/04/2015 0.25
B 19/07/2013 0.20
B 23/01/2016 0.30
我想加入/合并这两个数据帧,并将它们调整为相同的时间-频率(每天或每周(。理想的结果是,对于每日频率:
State Date Value1 Value2
A 01/02/2013 NA 0,12
A 02/02/2013 NA 0,12
(...)
A 01/01/2015 2,5 0,12
(...)
A 01/04/2015 2,5 0,25
A 02/04/2015 3,2 0,25
(...)
A 12/01/2016 2,7 0,25
(...)
B 19/07/2013 NA 0,20
(...)
B 03/02/2015 3,1 0,20
(...)
B 02/05/2015 3,6 0,20
(...)
B 23/01/2016 3,6 0,30
B 24/01/2016 3,6 0,30
B 25/01/2016 2,8 0,30
感谢您的帮助!
我稍微修改了您提供的样本,展示了如何使用dplyr
的full_join
实现我认为您想要的目标
library(dplyr)
State1 <- c("A","A","A","B","B","B")
State2 <- c("A","A","B","B")
Date1 <- c("01/01/2015", "01/04/2015", "12/01/2016", "03/02/2015", "02/05/2015", "25/01/2016")
Date2 <- c("01/02/2013", "01/04/2015", "19/07/2013", "23/01/2016")
value1 <- c(2.5, 3.2, 2.7, 3.1, 3.6, 2.8)
value2 <- c(0.12, 0.25, 0.2, 0.3)
df1 <- data.frame(state = State1, date = Date1, value = value1)
df2 <- data.frame(state = State2, date = Date2, value = value2)
full_join(df1, df2, by=c("state", "date"), suffix = c("1","2"))
将返回以下
state date value1 value2
1 A 01/01/2015 2.5 NA
2 A 01/04/2015 3.2 0.25
3 A 12/01/2016 2.7 NA
4 B 03/02/2015 3.1 NA
5 B 02/05/2015 3.6 NA
6 B 25/01/2016 2.8 NA
7 A 01/02/2013 NA 0.12
8 B 19/07/2013 NA 0.20
9 B 23/01/2016 NA 0.30
我希望这对你有帮助。