set.seed(17)
df <- data.frame(x=300 * runif(10))
min(df); max(df)
## [1] 46.51525
## [1] 290.5136
df
## x
## 1 46.51525
## 2 290.51364
## 3 140.47893
## 4 233.04590
## 5 122.36572
## 6 161.63914
## 7 62.06630
## 8 56.13107
## 9 233.99091
## 10 58.18318
breaks <- seq(0,300, 100)
df$interval_order <- findInterval(df$x, breaks)
df$start <- breaks[df$interval]
df$end <- breaks[df$interval + 1]
#?findInterval
df$interval_data <- cut(df$x, breaks, include.lowest = T)
##############################
df
## x interval_order start end interval_data
## 1 46.51525 1 0 100 [0,100]
## 2 290.51364 3 200 300 (200,300]
## 3 140.47893 2 100 200 (100,200]
## 4 233.04590 3 200 300 (200,300]
## 5 122.36572 2 100 200 (100,200]
## 6 161.63914 2 100 200 (100,200]
## 7 62.06630 1 0 100 [0,100]
## 8 56.13107 1 0 100 [0,100]
## 9 233.99091 3 200 300 (200,300]
## 10 58.18318 1 0 100 [0,100]