Перезаписать значения в кадре данных, используя условия из будущих значений в R - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть три столбца данных с колонками: start_time, end_time и value

Мне нужно изменить end_time при выполнении определенных условий.

    start_time  end_time  value
    1           1000      100
    10          1000      150
    50          1000      103

Все значения end_time начинаются то же самое, но мне нужно go пройти через каждое число в столбце значений, начиная с самого раннего start_time, и найти следующее будущее значение, которое находится в пределах 5%. Если есть значение в пределах 5%, я хочу заменить end_time на start_time будущего значения. В приведенном выше примере таблица теперь будет выглядеть следующим образом:

    start_time  end_time  value
    1           50        100
    10          1000      150
    50          1000      103

Это будет продолжаться через более длинный список значений, всегда находя только следующее будущее значение, которое удовлетворяет условию 5%, и изменяя значение end_time.

1 Ответ

0 голосов
/ 18 апреля 2020

Это может делать то, что вы хотите:

for (i in 1:nrow(data.df)){
  # subset rows where value is within 0.05%
  start_times <- subset(data.df, abs(value - value[i]) < 0.05*value[i])
  # if any exist (excluding earlier events), edit end_time
  if(nrow(start_times) > 1){
    if(start_times$start_time[2] > data.df$start_time[i]){
      data.df$end_time[i] <- start_times$start_time[2]
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...