の日付(四半期)に基づいてランキングを作成します。すべての一意のIDについては私たちは、次のデータテーブルで開始しますR
id date
1: 1 2016-03-31
2: 1 2015-12-31
3: 1 2015-09-30
4: 1 2015-06-30
5: 1 2015-03-31
6: 2 2016-03-31
7: 2 2015-09-30
8: 2 2015-06-30
9: 2 2015-03-31
10: 2 2014-12-31
library(data.table)
DT <- data.table(c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2),
as.IDate(c("2016-03-31", "2015-12-31", "2015-09-30", "2015-06-30",
"2015-03-31", "2016-03-31", "2015-09-30", "2015-06-30",
"2015-03-31", "2014-12-31")))
setnames(DT, c("id", "date"))
を、私は、ランキングを作成したいです。私はランクの日付を取得するには、その日(私は日を考慮していない)から3ヶ月を削除する必要があり、後に特定のIDの最も現在の日付が0のランクを持つべきである-1。私はランク-19までそれを繰り返さなければならない。ランクを含む新しい列を追加した後。
最終的な出力は、(ID = 2の順位に注意してください)というようになります。
id date rank_year
1: 1 2016-03-31 0
2: 1 2015-12-31 -1
3: 1 2015-09-30 -2
4: 1 2015-06-30 -3
5: 1 2015-03-31 -4
6: 2 2016-03-31 0
7: 2 2015-09-30 -2
8: 2 2015-06-30 -3
9: 2 2015-03-31 -4
10: 2 2014-12-31 -5
ありがとう行うことができます!私の場合は、@akrunが提案するように 'DT(order、id、-date) 'を追加する必要があります。私はあなたのソリューションが特定のIDの最初の日付に基づいてランキングを行うと思います。 – Alexis
@Alexis Ok、この場合のために編集されました。 – Frank
私は実際に編集を理解していません。希望の出力とともに新しい例を得ることができますか?それが元の質問から大きく離れている場合は、新しい質問として投稿することもできます。 – Frank