2016-03-24 26 views
1

は、私は5つの区間の開始時刻と終了時刻を示している。このようなDFがあるとこれらの間隔:ベクトルの番号にインターバル番号を割り当てる

x = c(120.485, 326.019, 329.089, 337.564, 337.897, 340.133, 451.142, 
456.046, 456.213, 456.847, 458.549, 459.15, 459.416, 459.517, 
462.319, 464.788, 469.626, 590.345, 597.985, 598.152, 599.353, 
600.421, 601.756, 602.523, 602.857, 603.291, 603.758, 604.926, 
605.96, 606.827, 607.161, 608.362, 608.629, 609.764, 610.331, 
610.998, 611.098, 611.165, 617.004, 778.896, 781.065, 782.299, 
782.9, 783.2, 783.5, 783.934, 785.336, 785.669, 787.771, 789.039, 
789.606, 790.207, 791.642, 792.409, 797.714, 1014.59, 1015.29, 
1015.69, 1016.13, 1016.83, 1017.1, 1017.26, 1019.1, 1019.36, 
1019.5, 1019.83, 1020.77, 1021.2, 1022.4, 1022.8, 1023.14, 1023.84, 
1023.94, 1024.44, 1024.97, 1025, 1026.91, 1026.97, 1027.74, 1028.27, 
1029.17, 1029.71, 1029.81, 1032.01, 1032.11, 1033.31, 1035.35, 
1035.68, 1036.75, 1038.28) 

私は全ての区間外のベクトルx iの値があるかどうかを宣言する別のベクトル)を生成したい、または、ii)それが内部にある間隔ました。

私はfindIntervalを使用する方法について考えて、次のように開始しました:

y <- c(rbind(df$start, df$end)) #get a vector of start-end-start-end etc times 
findInterval(x, y) 

出力は次のようなものです:

[1] 0 1 1 1 1 2 3 3 3 3 3 3 3 3 3 3 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 7 7 7 
[43] 7 7 7 7 7 7 7 7 7 7 7 7 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 
[85] 9 9 9 9 9 10 

私は生産指数= 0結果の間隔位置を動作するようにこれを処理できますfindIntervalによってそれが最良の方法であるとは思われません。より良い方法がありますか?

時刻が開始時刻または終了時刻と同じ場合は、その間隔に属していると見なす必要があります。 findIntervalはこれを行うようには思われません。 xの最後の値は1038.28ですが、新しい間隔であるとみなされます。私はそれがinterval = 5に属するものとして割り当てられることを望みます。

間隔で表示されないxの値は、NAを取得する必要があります。ここで

+0

しかし、出力には5つの間隔しかありません。 – DatamineR

+0

"rightmost.closed = TRUE"が必要な場合があります –

答えて

2

は1つのアイデアです:

library(data.table) 
setDT(df) 

df[.(start = x), on="start", roll=Inf][start > end, id := NA_integer_]$id 

[1] NA 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 NA 3 
[20] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 
[39] 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 
[58] 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
[77] 5 5 5 5 5 5 5 5 5 5 5 5 5 5 

どれもOPで明示的に与えられなかったので、私は、しかし、これは所望の出力を持っているかはわかりません。

+0

もう一度、 'data.table'を学ぶ別の理由があります。 – jalapic

関連する問題