This can be done quite easily with rolling joins using data.table
package:
require(data.table) ## 1.9.2
setDT(data) ## convert to data.table by reference
setDT(events) ## ,,
setkey(data, date1) ## set the column to join on, also sorts by 'date1'
setkey(events, date2) ## ,, also sorts by 'date2'
data[, date := date1] ## create an extra column
# Now roll join
data[events, roll=-Inf]
# date1 ret1 date news2
# 1: 02.01.2000 1.1 02.01.2000 blabla1
# 2: 03.01.2000 3.0 03.01.2000 blabla2
# 3: 04.01.2000 1.4 06.01.2000 blabla3
# 4: 08.01.2000 0.6 09.01.2000 blabla4