来る新しい行の条件付き挿入は、私のデータフレームが(経験豊富なコミュニティからの素敵な編集のおかげで)どのように見えるかです:ダイナミック、次の特定の日の後に
主要データフレームDF でlibrary(data.table)
df <- fread('Account Date Blue Red Amount
A 1/1/2016 1 0 100
A 2/1/2016 1 1 200
B 1/10/2016 0 1 300
B 2/10/2016 1 1 400')
df[, Date := as.Date(Date, format="%m/%d/%Y")]
blue <- fread('Date Amount
6/1/2015 55
1/31/2016 55
2/28/2016 65
3/31/2016 75')
blue[, Date := as.Date(Date, format="%m/%d/%Y")]
red <- fread('Date Amount
12/31/2015 43
1/15/2016 47
2/15/2016 67
3/15/2016 77')
red[, Date := as.Date(Date, format="%m/%d/%Y")]
、青と赤のフィールドは、アカウントが特定の時点に属していることを示しています。たとえば、2011年1月1日現在、アカウントAはブルーカテゴリにのみ属しています。 青および赤色データフレームは、青と赤のカテゴリのすべての勘定に現金が支払われた日付を示しています。私は、アカウントがブルーまたはレッドまたは両方に属しているかどうかに基づいて青と赤データフレームからDFに日フィールドの後に来るだけの行でDF元に新しい行を挿入します。
私はこのようになります探しています出力:出力で
Account Date Blue Red Amount
A 1/1/2016 1 0 100
A 1/31/2016 1 0 55
A 2/1/2016 1 1 200
A 2/15/2016 1 1 67
A 2/28/2016 1 1 65
A 3/15/2016 1 1 77
A 3/31/2016 1 1 75
B ..............................
、2016年1月1日アカウントのようにのみブルーカテゴリに属します。私の目標は、2016年1月31日あるし、それを挿入し青表に2016年1月1日直後日付を見つけることです。アカウントAはカテゴリ赤ではないため1/15/2016を赤色の表に挿入したくありません。 1/1/2016の時点でです。私は青と赤のフィールドが挿入されたフィールドのNAを表示すると大丈夫です。
私の考えは、rbind(df, blue, red), by="Account")
を試していましたが、特定の時点でアカウントが属するカテゴリに基づいて、後日の日付を挿入するだけの条件を組み込む方法はわかりません。
所望の出力が矛盾私見である:あなたが唯一の条件に一致する最初の行を選択df' 'の最初の行について、一方、2列目には2つ以上を含めることができます。以下では、 'blue'と' red'の一致する行から最初の行を選択する解決法を見つけます。 – Jaap
@ProcrastinatusMaximus最初の行(1/1/2016)の時点で、Aはカテゴリーブルーだけなので、1/1と2/1の間にある青色の表から1/31を入れています。 df(2/1/2016)の2行目の時点で、Aは青と赤の両方です。だからこそ私はブルーとレッドのテーブルからすべての日付を持って来ました。 – gibbz00