私はRを初めて使用しています。次の基準に基づいて潜在的な重複ラボ記録を削除するコードを書く必要があります。 誰かが私にdplyr
でこれを行う方法について何か助けてくれることを願っていますか? Rに重複機能があり、日付の違いを簡単に定義できるようにするlubridate
パッケージの日付機能もあります。3つの条件を使用して重複を特定する
次のようにクリーンアップルールは以下のとおりです。
収集日が最後の収集日から6ヶ月以内であり、タイプは「同じ」であれば、でレコードを削除後の収集日。
収集日が最後の収集日から6ヶ月以内にであり、タイプは「異なる」であれば、両方のレコードを保持します。収集日は6ヶ月以内がある場合
、および一つのレコードは、ファージタイプがあり、他方はNAファージタイプがあり、その後、6ヶ月以内であるNAファージタイプのレコードを削除します。
私たちはそれらのレコードを削除する前に確認することができますので、削除すべきレコードをマークアップする「除去のための旗」と呼ばれる新しい列を作成したいと思います。
ここはデータセットです。重複レコードを持つ5つのクライアントがあり、データセットの後に期待される結果が含まれています。
dat0<-read.table(text="
ID Collection_Date Type
9318 5/8/2014 SE_8
29210 2/9/2015 SE_19
31733 10/27/2014 SE_13a
31733 10/29/2014 SE_13a
35463 4/14/2015 SE_13
260717 1/7/2016 SE_8
267125 7/15/2014 SE_8
276105 12/11/2014 SE_13a
276105 1/25/2015 NA
276195 11/20/2015 SE_13a
280415 9/21/2014 SE_8
280957 4/28/2015 SE_22
281839 1/6/2016 SE_13a
281839 11/21/2016 NA
302594 8/30/2015 SE_13a
423090 1/2/2016 SE_13
434579 1/10/2015 SE_13a
438046 4/15/2015 SE_22
438046 5/19/2015 SE_8
438396 1/14/2016 SE_13a
453374 2/19/2014 SE_35
519832 1/4/2015 SE_8
520665 8/15/2014 SE_13
520665 10/9/2014 SE_13
",sep="",header=TRUE)
重複して5つのクライアント用期待される結果:
31733 27-Oct-2014 SE_13a Keep
31733 29-Oct-2014 SE_13a Delete # because the record is within 6 months and type is the same
#-------------------
276105 11-Dec-2014 SE_13a Keep
276105 25-Jan-2015 NA Delete # because type is missing and record is within 6 months of the record above
#-------------------
281839 06-Jan-2016 SE_13a Keep
281839 21-Nov-2016 NA Keep # because dates are more than 6 months
#-------------------
438046 15-Apr-2015 SE_22 Keep
438046 19-May-2015 SE_8 Keep # because type is different even if date is within 6 months
#-------------------
520665 15-Aug-2014 SE_13 Keep
520665 09-Oct-2014 SE_13 Delete
追加情報がありますか?例:IDが2回以上現れる可能性はありますか?日付は常にIDごとに昇順に並べられていますか? – DatamineR