1
問題の小さな例を作成しようとしました。最初の列は異なる日付で、2番目の列はこれらの特定の日付に発生したダウングレードです。私は、ダウングレードごとに3行をフィルタリングする必要があります:ダウングレードの前日、ダウングレードが発生した日、およびダウングレード後の日。条件で行を選択し、重複を含む順序を設定する
df <- data.frame(date = Sys.Date() - 19:0, dgrd = NA)
df$dgrd[c(4, 10, 11, 16)] <- "X" #small dataframe inclduing problematic downgrades
down <- which(!is.na(df$dgrd)) #select all days where downgrade occured
keep <- df[c(down-1, down, down+1), ] #select the specific days for each downgrade
print(keep)
date dgrd
2017-09-26 <NA>
2017-10-02 <NA>
2017-10-03 X
2017-10-08 <NA>
2017-09-27 X
2017-10-03 X
2017-10-04 X
2017-10-09 X
2017-09-28 <NA>
2017-10-04 X
2017-10-05 <NA>
2017-10-10 <NA>
この出力をソートする必要があります。これは、ある特定のダウングレードに属する3日間を並べて表示する必要があります。 2日連続でダウングレードした場合、注文が正しくないため、日付でソートすることはできません。
次のようにすべての3行は1つの格下げに属しているように、だから、最後に私のテーブルには、なります:連日の格下げの場合
date dgrd
2017-09-26 <NA>
2017-09-27 X
2017-09-28 <NA>
2017-10-02 <NA>
2017-10-03 X
2017-10-04 X
2017-10-03 X
2017-10-04 X
2017-10-05 <NA>
2017-10-08 <NA>
2017-10-09 X
2017-10-10 <NA>
、私は私の中で必要な重複行があります最終的な出力であるため、unique()
関数を使用することはできません。
どうすればこの問題を解決できますか?