【发布时间】:2018-11-18 02:33:56
【问题描述】:
下面是我拥有的更大 tibble 的较小版本,我想根据 bandNumber 列中的值或基于它们的行位置将 reflectanceSfp 和 reflectanceDT 中的值替换为 NA。我想专门用 tidyverse 管道和相关包来解决这个问题。
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"))
【问题讨论】:
标签: r replace tidyverse data-cleaning dplyr