У меня есть фрейм данных с двумя столбцами.Первый столбец представляет собой временную метку, а второй столбец представляет собой некоторое значение.Например:
library(tidyverse)
set.seed(123)
data_df <- tibble(t = 1:15,
value = sample(letters, 15))
У меня есть другой фрейм данных, который определяет диапазон временных меток, которые необходимо обновить, и их соответствующие значения.Например:
criteria_df <- tibble(start = c(1, 3, 7),
end = c(2, 5, 10),
value = c('a', 'b', 'c')
)
Это означает, что мне нужно изменить столбец значений в data_df, чтобы его значение от t = 1 до t = 2 было «a», от t = 3 до t = 5 -«b» и от t = 7 до t = 10 - это «c».
Каков рекомендуемый способ сделать это в R?
Единственный способ, которым я мог придумать, - это циклкаждую строку в критерий_данных и мутируйте столбец значений в data_df после фильтрации столбца t, например:
library(iterators)
library(foreach)
foreach(row = row_iter, .combine = c) %do% {
seg_start = row$start
seg_end = row$end
new_value = row$value
data_df %<>%
mutate(value = if_else(between(t, seg_start, seg_end),
new_value,
value))
NULL
}