, plyr:: join:
times=c(df2$onset[1],df2$offset)
df1 <- data.frame(time=seq(0.0, by = 0.03, length.out = 100))
df2 <- data.frame(onset=c(0.0, 0.8, 1.9, 2.4), offset=c(0.799, 1.899, 2.399, 3.0), A=c(1,2,3,4), B=c(5,6,7,8))
df2$ranges <-cut(df2$onset,times,include.lowest=T))
df1$ranges <-cut(df1$time,times,include.lowest=T,levels=levels(df2$ranges))
join(df1,df2,by='ranges')
head(join(df1,df2,by='ranges')[-2])
time onset offset A B
1 0.00 0 0.799 1 5
2 0.03 0 0.799 1 5
3 0.06 0 0.799 1 5
4 0.09 0 0.799 1 5
5 0.12 0 0.799 1 5
6 0.15 0 0.799 1 5