0

I am trying to make a for loop for the following code:

data <- data %>% 
  mutate(intervals = case_when(
  Time >= bound[1] & Time < bound[2]~ "1", 
  Time >= bound[2] & Time < bound[3]~ "2", 
  Time >= bound[3] & Time < bound[4]~ "3", 
  Time >= bound[4] & Time < bound[5]~ "4", 
  Time >= bound[5] & Time < bound[6]~ "5", 
  Time >= bound[6] & Time < bound[7]~ "6", 
  Time >= bound[7] & Time < bound[8]~ "7", 
  Time >= bound[8] & Time < bound[9]~ "8", 
  Time >= bound[9] & Time < bound[10]~ "9", 
  Time >= bound[10] & Time < bound[11]~ "10", 
  Time >= bound[11] & Time < bound[12]~ "11", 
  Time >= bound[12] & Time < bound[13]~ "12", 
  Time >= bound[13] & Time < bound[14]~ "13", 
  Time >= bound[14] & Time < bound[15]~ "14", 
  Time >= bound[15] & Time < bound[16]~ "15", 
  Time >= bound[16] & Time < bound[17]~ "16", 
  Time >= bound[17] & Time < bound[18]~ "17", 
  Time >= bound[18] & Time < bound[19]~ "18", 
  Time >= bound[19] & Time < bound[20]~ "19", 
  Time >= bound[20] & Time < bound[21]~ "20", 
  Time >= bound[21] & Time < bound[22]~ "21", 
  Time >= bound[22] & Time < bound[23]~ "22", 
  Time >= bound[23] & Time < bound[24]~ "23", 
  Time >= bound[24] & Time < bound[25]~ "24", 
  Time >= bound[25] & Time < bound[26]~ "25", 
  Time >= bound[26] & Time < bound[27]~ "26", 
  Time >= bound[27] & Time < bound[28]~ "27", 
  Time >= bound[28] & Time < bound[29]~ "28", 
  Time >= bound[29] & Time < bound[30]~ "29", 
  Time >= bound[30] & Time < bound[31]~ "30", 
  Time >= bound[31] & Time < bound[32]~ "31", 
  Time >= bound[32] & Time < bound[33]~ "32", 
  Time >= bound[33] & Time < bound[34]~ "33", 
  Time >= bound[34] & Time < bound[35]~ "34", 
  Time >= bound[35] & Time < bound[36]~ "35", 
  Time >= bound[36] & Time < bound[37]~ "36", 
  Time >= bound[37] & Time < bound[38]~ "37", 
  Time >= bound[38] & Time < bound[39]~ "38", 
  Time >= bound[39] & Time <= bound[40]~ "39", 
  TRUE ~ ""))

The code works perfect, but I need for another example a lot more bounds and therefore i am trying to implement a for loop:

data <- data %>% 
  mutate(intervals = for(l in c(1:39)){
    case_when(
    Time >= bound[l] & Time < bound[l+1]~ l, 
    TRUE ~ "")})

which unfortunately does not work. Any suggestions on how to correctly implement the loop?

jonas7745
  • 91
  • 6
  • 2
    `data %>% mutate(intervals = cut(Time, bound, label = seq_along(bound[-1])))` should work. If it doesn't, please edit your question to include sample input. – Gregor Thomas Mar 24 '21 at 21:26
  • 2
    It sounds like you really need to discover `cut` or `findInterval` – Dason Mar 24 '21 at 21:27

0 Answers0