私はこのフォーマット効率サブセット化data.table複数回
> data = data.table(id = 1:10, date = seq(as.Date("2016-01-01"), by = 1, length = 10))
> data
id date
1: 1 2016-01-01
2: 2 2016-01-02
3: 3 2016-01-03
4: 4 2016-01-04
5: 5 2016-01-05
6: 6 2016-01-06
7: 7 2016-01-07
8: 8 2016-01-08
9: 9 2016-01-09
10: 10 2016-01-10
のデータを有するIクエリ/ Iプリフォームたいサブセットを別のマトリックスを有します。
> query = data.table(id = c(1,4,7), date_start = c("2016-01-01", "2016-01-01", "2016-01-01"), date_end = c("2016-01-04", "2016-01-02", "2016-01-03"))
> query
id date_start date_end
1: 1 2016-01-01 2016-01-04
2: 4 2016-01-01 2016-01-02
3: 7 2016-01-01 2016-01-03
私はこのような何かをしたい:
subset(data, (id == query[1] & date > date_start[1] & date < date_end[1]) |
(id == query[2] & date > date_start[2] & date < date_end[2]) |
(id == query[3] & date > date_start[3] & date < date_end[3]))
は自動的にforループを使用して、その結果をrbindingずにサブセットクエリが生成されています。
data.full <- merge(data,query,by="id", all.x=T)
次に、あなたがquery
で参照されていない観測を除外し、それらが落ちた場合に参照されたものを維持したい場合は:あなたがちょうどそれらに参加することができ
おかげ
データを正しくフォーマットした後で 'foverlaps(data、query、nomatch = 0)'を使うことができます( 'IDate'カラム、'?foverlaps'と '?IDate'を参照)。このQ&Aは助けになるかもしれません:http://stackoverflow.com/q/27487949/ – Frank
私はfoverlapsが私が探しているものだと思います、答えとして返信すれば、私はそれを受け入れることができます。 – yingw