おはようございます。スタック オーバーフローに関する投稿は初めてです。助けてくれてありがとう!
株式データの分析に使用している 2 つのデータフレームがあります。1 つのデータ フレームには他の情報の中に日付があり、df と呼ぶことができます。
df1 <- tibble(Key = c('a','b','c'), i =11:13, date= ymd(20110101:20110103))
2 番目のデータフレームには、日付やその他の重要な情報も含まれています。
df2 <-tibble(Answer = c('a','d','e','b','f','c'), j =14:19, date= ymd(20150304:20150309))
これが私がやりたいことです: df1 の各行について、次のことを行う必要があります。
- df2$answer が df1$key と同じ場合、df1 のその行の日付に最も近い日付を df2 で見つけます。
-次に、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
です。
ただし、2 番目の行 については、 のKey=b
行df2
の日付のみを表示するようにサブセット化しますdf2$Answer = b
。したがって、日付は である必要が2015-03-07
ありj =17
ます。
ご協力ありがとうございました!
ジェシー