R - это векторизованный язык, для l oop не требуется. Сначала мы создаем воспроизводимые образцы данных с помощью dput
, кстати. хорошая идея для вашего следующего вопроса SO.
Затем мы можем заменить помеченные данные функцией ifelse
:
## dump of data frame
dat <- structure(list(DateTimeStamp = structure(c(1009843200, 1009844100,
1009845000, 1009845900, 1009847700, 1009848600, 1009849500, 1009851300,
1009852200, 1009853100), class = c("POSIXct", "POSIXt"), tzone = "UTC"),
Temperature = c(5.5, 5.3, 0.2, 4.8, 4.4, 8.9, 4.3, 4, 3.9,
3.3), Flag = c("<4>", "<4>", "<-3>", "<4>", "<4>", "<-2>",
"<4>", "<4>", "<4>", "<4>")), class = c("spec_tbl_df", "tbl_df",
"tbl", "data.frame"), row.names = c(NA, -10L), spec = structure(list(
cols = list(DateTimeStamp = structure(list(format = ""), class = c("collector_datetime",
"collector")), Temperature = structure(list(), class = c("collector_double",
"collector")), Flag = structure(list(), class = c("collector_character",
"collector"))), default = structure(list(), class = c("collector_guess",
"collector")), skip = 1), class = "col_spec"))
## remove codes
dat_remove_codes <- c("<-2>", "<-3>")
## show original data frame
head(dat)
## replacement
dat$Temperature <- ifelse(dat$Flag %in% dat_remove_codes, NA, dat$Temperature)
## changed data
head(dat)
Если у вас несколько таких таблиц, a для l oop или может войти функция применения.