我有一個關於R中日期操作的問題。我查找了幾天,但無法在線找到任何幫助。我有一個數據集,我有id和兩個日期,另一個數據集具有相同的id變量,日期和價格。例如:如果在R中另一個數據集中的兩個變量所定義的範圍內,則從一個數據集獲取變量值
x = data.frame(id = c("A","B","C","C"),
date1 = c("29/05/2013", "23/08/2011", "25/09/2011", "18/11/2011"),
date2 = c("10/07/2013", "04/10/2011", "10/11/2011", \t "15/12/2011"))
> x
id date1 date2
1 A 29/05/2013 10/07/2013
2 B 23/08/2011 04/10/2011
3 C 25/09/2011 10/11/2011
4 C 18/11/2011 15/12/2011
y = data.frame(id = c("A","A","A","B","B","B","B","B","B","C","C","C"),
date = c("21/02/2013", "19/06/2013", \t "31/07/2013", \t "07/10/2011", \t "16/01/2012", \t "10/07/2012","20/09/2012", \t "29/11/2012", \t \t "15/08/2014", \t "27/09/2011", \t "27/01/2012", \t "09/03/2012"),
price = c(126,109,111,14,13.8,14.1,14, \t 14.4,143,102,114,116))
> y
id date price
1 A 21/02/2013 126.0
2 A 19/06/2013 109.0
3 A 31/07/2013 111.0
4 B 07/10/2011 14.0
5 B 16/01/2012 13.8
6 B 10/07/2012 14.1
7 B 20/09/2012 14.0
8 B 29/11/2012 14.4
9 B 15/08/2014 143.0
10 C 27/09/2011 102.0
11 C 27/01/2012 114.0
12 C 09/03/2012 116.0
我想要做的就是尋找在數據集X兩個日期,如果在數據集中爲y的日期內通過在數據集X中的兩個日期確定對於相同的ID,爲該ID和日期選擇價格的價值。如果沒有它缺失。所以基本上我想有這樣一個最後的數據集來結束:
final = data.frame(id = c("A","B","C","C"),
date1 = c("29/05/2013", "23/08/2011", "25/09/2011", "18/11/2011"),
date2 = c("10/07/2013", "04/10/2011", "10/11/2011", "15/12/2011"),
date = c("19/06/2013", "NA", \t "27/09/2011", \t "NA"),
price = c(109,"NA",102,"NA") )
> final
id date1 date2 date price
1 A 29/05/2013 10/07/2013 19/06/2013 109
2 B 23/08/2011 04/10/2011 20/09/2012 14
3 C 25/09/2011 10/11/2011 27/09/2011 102
4 C 18/11/2011 15/12/2011 NA NA
任何幫助將非常感激。
也參見:(http://stackoverflow.com/questions/24480031/roll-join-with-start-end [與開始/結束窗口輥加入] -窗口) – MrFlick