Ниже приведена уменьшенная версия гораздо большего тибля, который у меня есть, и я хочу заменить значения в refleanceSfp и refleanceDT на NA на основе значений в столбце bandNumber или на основе их положения в строке.Я хотел бы решить эту проблему специально с помощью tidyverse pipe и связанных пакетов.
reflectanceSfp wavelength bandNumber reflectanceDT wavelength1
-0.0113 376 1.00 0.000148 377
-0.000592 381 2.00 0.00589 382
0.0158 386 3.00 0.0101 387
0.0200 391 4.00 0.0110 392
0.0240 396 5.00 0.0117 397
0.0265 401 6.00 0.0149 402
Итак, у меня есть следующий список плохих полос, которые представляют собой номера полос, которые я хотел бы заменить на NA:
badBands <- c(1:2,6)
Я попробовал что-то в этом формате, просто чтобы посмотреть, что он будет делать
m2 <- myData %>%
mutate(reflectanceSfp = case_when(bandNumber == 1.00 ~ NA ))
Но, в конечном счете, хотел бы, чтобы вектор плохих полос был в канале, и попытался понять использование modify_atи mutate_at.
Я бы хотел, чтобы итоговый набор данных выглядел как
reflectanceSfp wavelength bandNumber reflectanceDT wavelength1
NA 376 1.00 0.000148 377
NA 381 2.00 0.00589 382
0.0158 386 3.00 0.0101 387
0.0200 391 4.00 0.0110 392
0.0240 396 5.00 0.0117 397
NA 401 6.00 0.0149 402
Ниже приведена версия моей таблицы для dput:
myData <- structure(list(reflectanceSfp = c(-0.011258, -0.000592, 0.015815,
0.019991, 0.023965, 0.026547), wavelength = c(376.440002, 381.450012,
386.459991, 391.470001, 396.470001, 401.480011), bandNumber = c(1,
2, 3, 4, 5, 6), reflectanceDT = c(0.00014819, 0.00589207, 0.01012335,
0.01101705, 0.01165185, 0.01486412), wavelength1 = c(376.6300049,
381.6400147, 386.6499939, 391.6600037, 396.6600037, 401.6700134
)), .Names = c("reflectanceSfp", "wavelength", "bandNumber",
"reflectanceDT", "wavelength1"), row.names = c(NA, -6L), class = c("tbl_df",
"tbl", "data.frame"))