(これは、最初にここに投稿されたものへの質問の続きです。
私の元の問題は解決されましたが、これら2つのデータセットを少し異なる方法でマージしたいと思います。
df1
はある種の「財務報告」データでdf2
あり、ある種の「年末の財務データ」です。以前は、財務レポートデータを最後に利用可能な財務データにリンクしたいと思っていました。
ここdf2
で、財務報告書(df1
)のデータを使用して、財務データ()を「予測」したいと思います。それはすることにより、データリンクであるID
とdate_f
とdate
。
次の条件を課したいと思います。
次の場合に参加します。
date
(t+1
)from df2
> date_f
(t
)fromでdf1
あり、差は6か月以上でなければなりません。
そうでなければ;
取るdate
にt+2
。場合(すなわち、date
(t+1
)未満6ヶ月後であるdate_f
(t
)を使用してdate
(でt+2
)。
基本的には財務報告データを使ってデータdf1
を予測したいのですdf2
が、の情報df1
は1週間先の予測には役立たないので、翌年のデータを予測したいと思います。
データは次のようになります。
df1:
ID date_f
1 1047699 2014-03-03
2 858339 2007-03-01
3 1002910 2009-12-22
4 277135 2011-02-18
5 753308 2004-03-09
6 1018840 2008-02-26
7 1510295 2011-10-21
8 3133 2014-02-27
9 1467858 2010-02-26
10 865436 2004-11-05
df2:
ID date year
1 3133 1999-12-31 1999
2 3133 2000-12-31 2000
3 3133 2001-12-31 2001
4 3133 2002-12-31 2002
5 3133 2003-12-31 2003
6 3133 2004-12-31 2004
df1
:の最初の5行を使用した期待される出力
ID date_f date year
1 1047699 2014-03-03
2 858339 2007-03-01 2007-12-31 2007
3 1002910 2009-12-22 2010-12-31 2010 *
4 277135 2011-02-18 2011-12-31 2011
5 753308 2004-03-09 2004-12-31 2004
date
あるべき2009-12-31
であるdf2
と、それは>まだあるdate_f
しかし私が課すしたい条件がそれは>しなければならない」ということです(1週間)date_f
とdate
将来への6ヶ月(または180日)以上になる。だからこここの観測は2番目の条件(わずか1週間の違いのため)では失敗するので、次の年の日付であるを「予測」したいと思い2010-12-31
ます。data1
df1 <- structure(list(ID = c(1047699L, 858339L, 1002910L, 277135L, 753308L,
1018840L, 1510295L, 3133L, 1467858L, 865436L), date_f = structure(c(16132,
13573, 14600, 15023, 12486, 13935, 15268, 16128, 14666, 12727
), class = "Date")), row.names = c(NA, -10L), .internal.selfref = <pointer: 0x0000000002511ef0>, class = "data.frame")
data2
df2 <- structure(list(ID = c(3133L, 3133L, 3133L, 3133L, 3133L, 3133L,
3133L, 753308L, 753308L, 753308L, 753308L, 753308L, 753308L,
753308L, 753308L, 753308L, 753308L, 753308L, 753308L, 753308L,
753308L, 753308L, 753308L, 753308L, 753308L, 753308L, 753308L,
1467858L, 1467858L, 1467858L, 1467858L, 1467858L, 1467858L, 1467858L,
1467858L, 1467858L, 1467858L, 1467858L, 1467858L, 1467858L, 1467858L,
1467858L, 1467858L, 1467858L, 1467858L, 1467858L, 1467858L, 277135L,
277135L, 277135L, 277135L, 277135L, 277135L, 277135L, 277135L,
277135L, 277135L, 277135L, 277135L, 277135L, 277135L, 277135L,
277135L, 277135L, 277135L, 277135L, 277135L, 1002910L, 1002910L,
1002910L, 1002910L, 1002910L, 1002910L, 1002910L, 1002910L, 1002910L,
1002910L, 1002910L, 1002910L, 1002910L, 1002910L, 1002910L, 1002910L,
1002910L, 1002910L, 1002910L, 1002910L, 858339L, 858339L, 858339L,
858339L, 858339L, 858339L, 858339L, 858339L, 858339L, 858339L,
858339L, 858339L, 858339L, 858339L, 858339L, 858339L, 858339L,
858339L, 858339L, 858339L, 865436L, 865436L, 865436L, 865436L,
865436L, 865436L, 865436L, 865436L, 865436L, 865436L, 865436L,
865436L, 865436L, 865436L, 865436L, 865436L, 865436L, 865436L,
1018840L, 1018840L, 1018840L, 1018840L, 1018840L, 1018840L, 1018840L,
1018840L, 1018840L, 1018840L, 1018840L, 1018840L, 1018840L, 1018840L,
1018840L, 1018840L, 1018840L, 1018840L, 1018840L, 1018840L, 1018840L,
1047699L, 1047699L, 1047699L, 1047699L, 1047699L, 1047699L, 1047699L,
1047699L, 1047699L, 1047699L, 1047699L, 1510295L, 1510295L, 1510295L,
1510295L, 1510295L, 1510295L, 1510295L, 1510295L, 1510295L, 1510295L
), date = structure(c(10956, 11322, 11687, 12052, 12417, 12783,
13148, 10956, 11322, 11687, 12052, 12417, 12783, 13148, 13513,
13878, 14244, 14609, 14974, 15339, 15705, 16070, 16435, 16800,
17166, 17531, 17896, 10956, 11322, 11687, 12052, 12417, 12783,
13148, 13513, 13878, 14244, 14609, 14974, 15339, 15705, 16070,
16435, 16800, 17166, 17531, 17896, 10956, 11322, 11687, 12052,
12417, 12783, 13148, 13513, 13878, 14244, 14609, 14974, 15339,
15705, 16070, 16435, 16800, 17166, 17531, 17896, 10956, 11322,
11687, 12052, 12417, 12783, 13148, 13513, 13878, 17166, 14244,
14609, 14974, 15339, 15705, 16070, 16435, 16800, 17531, 17896,
10956, 11322, 11687, 12052, 12417, 12783, 13148, 13513, 13878,
14244, 14609, 14974, 15339, 15705, 16070, 16435, 16800, 17166,
17531, 17896, 10864, 11230, 11595, 11960, 12325, 12691, 13056,
13421, 13786, 14152, 14517, 14882, 15247, 15613, 15978, 16343,
16708, 17074, 10622, 10987, 11353, 11718, 12083, 12448, 12814,
13179, 13544, 13909, 14275, 14640, 15005, 15370, 15736, 16101,
16466, 16831, 17197, 17562, 17927, 10956, 11322, 11687, 12052,
12417, 12783, 13148, 13513, 13878, 14244, 14609, 14609, 14974,
15339, 15705, 16070, 16435, 16800, 17166, 17531, 17896), class = "Date"),
year = c(1999L, 2000L, 2001L, 2002L, 2003L, 2004L, 2005L,
1999L, 2000L, 2001L, 2002L, 2003L, 2004L, 2005L, 2006L, 2007L,
2008L, 2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 2015L, 2016L,
2017L, 2018L, 1999L, 2000L, 2001L, 2002L, 2003L, 2004L, 2005L,
2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 2012L, 2013L, 2014L,
2015L, 2016L, 2017L, 2018L, 1999L, 2000L, 2001L, 2002L, 2003L,
2004L, 2005L, 2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 2012L,
2013L, 2014L, 2015L, 2016L, 2017L, 2018L, 1999L, 2000L, 2001L,
2002L, 2003L, 2004L, 2005L, 2006L, 2007L, 2016L, 2008L, 2009L,
2010L, 2011L, 2012L, 2013L, 2014L, 2015L, 2017L, 2018L, 1999L,
2000L, 2001L, 2002L, 2003L, 2004L, 2005L, 2006L, 2007L, 2008L,
2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 2015L, 2016L, 2017L,
2018L, 1999L, 2000L, 2001L, 2002L, 2003L, 2004L, 2005L, 2006L,
2007L, 2008L, 2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 2015L,
2016L, 1998L, 1999L, 2000L, 2001L, 2002L, 2003L, 2004L, 2005L,
2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 2012L, 2013L, 2014L,
2015L, 2016L, 2017L, 2018L, 1999L, 2000L, 2001L, 2002L, 2003L,
2004L, 2005L, 2006L, 2007L, 2008L, 2009L, 2009L, 2010L, 2011L,
2012L, 2013L, 2014L, 2015L, 2016L, 2017L, 2018L)), row.names = c(NA,
-167L), .internal.selfref = <pointer: 0x0000000002511ef0>, class = "data.frame")
#
これで私の問題は解決したと思います。
df1$start_date <- df1$date_f + 183
df1$end_date <- df1$date_f + 540
library(fuzzyjoin)
yy <- fuzzy_left_join(
df1, df2,
by = c(
"ID" = "ID",
"start_date" = "date",
"end_date" = "date"
),
match_fun = list(`==`, `<`, `>=`)
)
私が私の論理に失敗するかもしれないと誰かが見たら、私を訂正してください!
3月に財務報告が発表され、7月に財務情報が発表された場合、この結合は無視したいと思います。したがって、start_date <- df1$date_f + 183
。また、財務報告の発表から1。5年(540日)を上限に設定しました。したがって、次の年のレポートは正しい財務情報と正しく一致します。
出力のサンプル:
ID.x date_f start_date end_date ID.y date fyear
1 1006835 2008-09-30 2009-04-01 2010-03-24 NA <NA> NA
2 1510295 2009-10-19 2010-04-20 2011-04-12 1510295 2010-12-31 2010
3 1506307 2016-02-08 2016-08-09 2017-08-01 1506307 2016-12-31 2016
4 814453 2005-03-15 2005-09-14 2006-09-06 814453 2005-12-31 2005
5 832988 2003-06-19 2003-12-19 2004-12-10 832988 2004-01-31 2003
6 1275283 2007-02-26 2007-08-28 2008-08-19 1275283 2007-12-31 2007
7 858470 2004-03-15 2004-09-14 2005-09-06 858470 2004-12-31 2004
8 885639 2005-03-14 2005-09-13 2006-09-05 885639 2006-01-31 2005
9 732718 2014-04-02 2014-10-02 2015-09-24 NA <NA> NA
10 1385157 2009-03-02 2009-09-01 2010-08-24 1385157 2009-09-30 2009
つまり、ID.x
=1510295
にはdate.f
=が2009-10-19
あり、参加するyear
と、おそらく2009-12-31
レポートからわずか2か月後の財務情報が得られます…(これは私にはあまり役に立ちません)
start_date
=2010-04-20
とend_date
=の境界を作成します2011-04-12
。どこをstart_date
今よりも大きけれ2009
年財務情報の終わり2009-12-31
。
私の範囲から境界fuzzyjoin
に一致させるために使用する(考える)私はそれらに参加することができます。date
df2
df1
###############################################################################
誰かがdata.table
バージョンを持っている場合、このメソッドにはメモリの問題があるので、それは素晴らしいことです。
setDT(df2)[df1, on = .(ID, date > start_date, date <= end_date)]
期待どおりに動作しません...
Reba McEntire が息子の Shelby Blackstock と共有しているクリスマスの伝統について学びましょう。
メーガン・マークルとマライア・キャリーが自然な髪の上でどのように結合したかについて、メーガンの「アーキタイプ」ポッドキャストのエピソードで学びましょう.
ハリー王子が家族、特にチャールズ王とウィリアム王子との関係について望んでいると主張したある情報源を発見してください。
ワイノナ・ジャッドが、母親のナオミ・ジャッドが亡くなってから初めての感謝祭のお祝いを主催しているときに、彼女が今では家長であることをどのように認識したかを学びましょう.
Air travel is far more than getting from point A to point B safely. How much do you know about the million little details that go into flying on airplanes?
The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!
ここLifehackerでは大きな年でした。一緒に、私たちはミツバチを救おうとし、ハッキングされ、太陽をじっと見つめ、グロスチェーンレストランの食べ物を食べ、核爆弾から身を隠しました。
写真:ゲッティイメージズ経由のハーバート・ドーフマン/コービスさて、昨日、幼い子供たちにマジシャンズを見させて銃を飛び越えていたようです。知っておくと良い!昨夜、娘と私はシカゴの素晴らしいビンテージシアターであるミュージックボックスで映画を見に行きました。年齢に関係なく、誰も問題を抱えてはいけません。それは素晴らしい人生です。
Tomorrow's Kitchen シリコンストレッチ蓋 12個パック | $14 | アマゾン | プロモーション コード 20OFFKINJALids は基本的にキッチンの靴下です。常に迷子になり、二度と閉じられない孤立したコンテナーが残ります。しかし、蓋が伸びて、残った容器、鍋、フライパン、さらには大きなスライスされた果物のすべてに適合するとしたらどうでしょうか? その非常に特殊な蓋を失うことを二度と心配する必要はありません。
ロシアのフィギュアスケーター、カミラ・バリエバが関与したドーピング事件が整理されているため、チームは2022年北京冬季オリンピックで獲得したメダルを待っています。
何千人ものAmazonの買い物客がMulberry Silk Pillowcaseを推奨しており、現在販売中. シルクの枕カバーにはいくつかの色があり、髪を柔らかく肌を透明に保ちます。Amazonで最大46%オフになっている間にシルクの枕カバーを購入してください
ラファイエット警察署は、「不審な男性が女性に近づいた」という複数の苦情を受けて、12 月にパデュー大学の教授の捜査を開始しました。
私たちの周りの世界と同じように、言語は常に変化しています。以前の時代では、言語の変化は数年または数十年にわたって発生していましたが、現在では数日または数時間で変化する可能性があります。
認知症を患っている 91 歳のアジア人女性が最近、47 番街のアウター サンセット地区でロメオ ロレンゾ パーハムに襲われました。伝えられるところによると、被害者はサンフランシスコの通りを歩いていたところ、容疑者に近づき、攻撃を受け、暴行を受けました。
Cómo mejoramos la accesibilidad de nuestro componente de precio, y cómo nos marcó el camino hacia nuevos saberes para nuestro sistema de diseño. Por Ana Calderon y Laura Sarmiento Leer esta historia en inglés.
“And a river went out of Eden to water the garden, and from thence it was parted and became into four heads” Genesis 2:10. ? The heart is located in the middle of the thoracic cavity, pointing eastward.