複数の期間にわたって、日付が他の日付の間にあるかどうかに基づいて新しい列を作成します

rw2

複数行の人と、各課税年度が終了する日付のテーブルがあります。

df1 <- tibble::tribble(~ID,       ~TAX_YEAR_END_DATE,
                       "01",      "2009-04-06",
                       "01",      "2010-04-06",
                       "01",      "2011-04-06",
                       "02",      "2010-04-06",
                       "02",      "2011-04-06",
                       "02",      "2012-04-06")

また、1人あたり複数の行があり、作業期間の開始日と終了日を示す別のテーブル:

df2 <- tibble::tribble(~ID,     ~START_DATE,   ~END_DATE,
                       "01",    "2007-09-11",  "2010-04-06",
                       "02",    "2008-06-06",  "2010-04-06",
                       "02",    "2011-09-09",  "2014-04-06")

END_DATE4月6日に常にあり、そして誰もが常に持っているSTART_DATEEND_DATE何も存在しない- NULLsが。

STATUS最初のテーブルに新しいを追加して、各人が毎年雇用されているかどうかを示します。上記の例では、次のようになります。

ID      TAX_YEAR_END_DATE   STATUS
01      2009-04-06          EMPLOYED
01      2010-04-06          EMPLOYED
01      2011-04-06          NOT
02      2010-04-06          EMPLOYED
02      2011-04-06          NOT
02      2012-04-06          EMPLOYED

私はでテーブルを結合できることを考え出したID、その後、使用中にいくつかのルールを適用するmutate()新しい列を作成する-場合TY_END_DATEの間にあるSTART_DATEEND_DATE、その後STATUS採用され、そしてそれは、その後でない場合STATUSではありません。

私が行き詰まっているのは、2番目の表に複数の雇用期間がある借り手です。このような場合、結合を実行すると最初のテーブルの行が複製(またはそれ以上)され、これを行う別の方法を見つけることができませんでした。

私はRを使用していますが、通常はより高速であるためdata.tableを使用しますが、dplyrでも問題ない可能性があります。

リチャードテルフォード

結合を使用してテーブルを関連付けてから要約するソリューション

df1 %>% left_join(df2, by = "ID") %>% 
  mutate(employed = between(TAX_YEAR_END_DATE, START_DATE, END_DATE)) %>% 
  group_by(ID, TAX_YEAR_END_DATE) %>% 
  summarise(employed = any(employed))

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

日付列が別の日付列に依存する期間にあるかどうかを確認します

分類Dev

(Laravel)今日が開始日に基づいて2つの日付の間にあるかどうかを確認します

分類Dev

他の複数の列の特定の範囲内の日付の存在に基づいて列を作成します

分類Dev

間隔を使用して、日付の列が他の日付のベクトル内にあるかどうかを識別します

分類Dev

日時の値が1時間以内かどうかに基づいて、パンダに新しい列を作成します

分類Dev

日付に基づいて複数の列を作成する

分類Dev

期間の選択に基づいて日付を表示したい

分類Dev

年を無視して、日付が2つの日付の間にあるかどうかを調べます

分類Dev

Python-複数の日付に基づいて新しい列を作成します

分類Dev

SQL Serverを使用して、日付が日付範囲の間にあるかどうかを確認します

分類Dev

日付の違いに基づいて新しい列を作成します

分類Dev

別のDataFrameの日付の間にある日付に基づいてDataFrameに参加します

分類Dev

日付が日付の間にあるかどうかmysqlを確認してください

分類Dev

グループに基づいて日付範囲の間にあるかどうかをカウントします

分類Dev

2つの日付の間に2暦日が過ぎているかどうかを確認します

分類Dev

Rの他の列の最も早い日付値に基づいて新しい列を作成する

分類Dev

MYSQLを使用して指定された日付に基づいて現在の期間を取得する

分類Dev

ある期間に12月の日が含まれているかどうかを確認します

分類Dev

日付列と重複行ごとに分割された集計列の違いに基づいて、SQLで行をどのように複製しますか?

分類Dev

R:期間の1つの行を曜日と時間に基づいて複数の行に分割するにはどうすればよいですか?

分類Dev

今日の日付が他の2つの指定された日付の間にあるか等しいかどうかを確認するC#コード

分類Dev

2つの日付が許可された期間内にあるかどうかを確認します

分類Dev

日付が連続している場合、日付列に基づいてSQLの行をマージするにはどうすればよいですか?

分類Dev

可変年の日付に基づいて新しい列を作成する

分類Dev

ISO文字列の日付が2つの日付の間にあるかどうかを確認します

分類Dev

MySQLはVarcharの日付が文字列の日付の間にあるかどうかを確認します

分類Dev

日付がc(配列)の2つの日付の間にあるかどうかを確認します

分類Dev

私の方法を使用して日付を比較する際にどこが間違っていますか?

分類Dev

条件と既存の日付列および時間デルタ列に基づいて新しい日付列を作成する

Related 関連記事

  1. 1

    日付列が別の日付列に依存する期間にあるかどうかを確認します

  2. 2

    (Laravel)今日が開始日に基づいて2つの日付の間にあるかどうかを確認します

  3. 3

    他の複数の列の特定の範囲内の日付の存在に基づいて列を作成します

  4. 4

    間隔を使用して、日付の列が他の日付のベクトル内にあるかどうかを識別します

  5. 5

    日時の値が1時間以内かどうかに基づいて、パンダに新しい列を作成します

  6. 6

    日付に基づいて複数の列を作成する

  7. 7

    期間の選択に基づいて日付を表示したい

  8. 8

    年を無視して、日付が2つの日付の間にあるかどうかを調べます

  9. 9

    Python-複数の日付に基づいて新しい列を作成します

  10. 10

    SQL Serverを使用して、日付が日付範囲の間にあるかどうかを確認します

  11. 11

    日付の違いに基づいて新しい列を作成します

  12. 12

    別のDataFrameの日付の間にある日付に基づいてDataFrameに参加します

  13. 13

    日付が日付の間にあるかどうかmysqlを確認してください

  14. 14

    グループに基づいて日付範囲の間にあるかどうかをカウントします

  15. 15

    2つの日付の間に2暦日が過ぎているかどうかを確認します

  16. 16

    Rの他の列の最も早い日付値に基づいて新しい列を作成する

  17. 17

    MYSQLを使用して指定された日付に基づいて現在の期間を取得する

  18. 18

    ある期間に12月の日が含まれているかどうかを確認します

  19. 19

    日付列と重複行ごとに分割された集計列の違いに基づいて、SQLで行をどのように複製しますか?

  20. 20

    R:期間の1つの行を曜日と時間に基づいて複数の行に分割するにはどうすればよいですか?

  21. 21

    今日の日付が他の2つの指定された日付の間にあるか等しいかどうかを確認するC#コード

  22. 22

    2つの日付が許可された期間内にあるかどうかを確認します

  23. 23

    日付が連続している場合、日付列に基づいてSQLの行をマージするにはどうすればよいですか?

  24. 24

    可変年の日付に基づいて新しい列を作成する

  25. 25

    ISO文字列の日付が2つの日付の間にあるかどうかを確認します

  26. 26

    MySQLはVarcharの日付が文字列の日付の間にあるかどうかを確認します

  27. 27

    日付がc(配列)の2つの日付の間にあるかどうかを確認します

  28. 28

    私の方法を使用して日付を比較する際にどこが間違っていますか?

  29. 29

    条件と既存の日付列および時間デルタ列に基づいて新しい日付列を作成する

ホットタグ

アーカイブ