我有两个数据框:
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每股盈利
这两个数据集都包含大量行。
提前致谢
答案 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