基于R中的日期在两个不同长度的数据帧上操作

时间:2016-05-22 16:35:29

标签: r

我有两个数据框:

DF1

Revenue  EPS epsdate
100      5   2016-01-14
200      4   2016-04-14

df2

date          price
2016-01-15     16 
2016-01-16     18
2016-01-17     19
2016-04-15     24
2016-04-16     28

我想创建一个向量,其中价格除以之前的可用eps。所以:
2016-01-15,2016-01-16和2016-01-17价格应除以2016-01-14 EPS和
2016-04-15,2016-04-16价格应除以2016-04-14每股盈利 这两个数据集都包含大量行。

提前致谢

1 个答案:

答案 0 :(得分:0)

您可以使用cut功能在两个数据框上创建一个组变量,然后根据该组匹配价格和相应的EPS。详细而言,它可能是这样的:

library(dplyr)
df2$group <- as.integer(cut(df2$date, breaks = c(df1$epsdate, max(df2$date) + 1)))
df1$group <- seq_along(df1$epsdate)

adjPrice <- merge(df1, df2, by = "group") %>% mutate(newPrice = price / EPS) %>% 
            select(newPrice) %>% as.vector
adjPrice
  newPrice
1      3.2
2      3.6
3      3.8
4      6.0
5      7.0