複数の範囲の間にある値のリストを取得したいとします。複数の範囲によるサブセット
私はこれらの範囲の間に入る値のみが含まれるように結果を必要library(data.table)
values <- data.table(value = c(1:100))
range <- data.table(start = c(6, 29, 87), end = c(10, 35, 92))
:
results <- c(6, 7, 8, 9, 10, 29, 30, 31, 32, 33, 34, 35, 87, 88, 89, 90, 91, 92)
私は現在、しかし、実際のループのため、
results <- data.table(NULL)
for (i in 1:NROW(range){
results <- rbind(results,
data.table(result = values[value >= range[i, start] &
value <= range[i, end], value]))}
でこれをやっていますデータセットはかなり大きく、より効率的な方法を探しています。
任意の提案は大歓迎です!ありがとうございました!
私は何かを見落としていますか、これは "値"テーブルの複数の/多数の列の場合には不都合でしょうか?すなわち列を列挙しないで簡単な方法がありますか? –
便利な関数 '%inrange%'を使う: 'values [value%inrange%range]' – Henrik
@Henrikとてもいいです!私の答えにそれを含めました(答えとして投稿したい場合は、ここでそれを削除します) – Jaap