大家早上好,这是我第一次在堆栈溢出上发帖。感谢您的任何帮助!
我有 2 个用于分析股票数据的数据框。一个数据框在其他信息中包含日期,我们可以将其称为 df:
df1 <- tibble(Key = c('a','b','c'), i =11:13, date= ymd(20110101:20110103))
第二个数据框还包含日期和其他重要信息。
df2 <-tibble(Answer = c('a','d','e','b','f','c'), j =14:19, date= ymd(20150304:20150309))
这是我想要做的:对于 df1 中的每一行,我需要:
- 在 df2 中查找日期,当 df2$answer 与 df1$key 相同时,它最接近 df1 中该行的日期。
-然后提取df2中该行中另一列的信息,并将其放入df1中的新行中。
我试过的代码:
df1 %>%
group_by(Key, i) %>%
mutate(
`New Column` = df2$j[
which.min(subset(df2$date, df2$Answer== Key) - date)])
结果是:
Key i date `New Column`
1 a 11 2011-01-01 14
2 b 12 2011-01-02 14
3 c 13 2011-01-03 14
这对于第一行是正确的,a
。在df2
中,最接近的日期是2015-03-04
,其值j
实际上是14
。
但是,对于第二行,Key=b
我想df2
将子集设置为仅查看df2$Answer = b
. 因此,日期应该是2015-03-07
,为此j =17
。
谢谢您的帮助!
杰西