我有以下数据框,并且我想用NA替换反射率值,这取决于波长值是否落入被确定为不良测量的某个范围的分组(badData vector).
坏数据的范围可能会随着时间的推移而改变,所以我希望解决方案尽可能通用.
badData <- c(296:310, 330:335, 350:565)
df <- data.frame(wavelength = seq(300,360,5.008667),
reflectance = seq(-1,-61,-5.008667))
df
wavelength reflectance
300.0000 -1.000000
305.0087 -6.008667
310.0173 -11.017334
315.0260 -16.026001
320.0347 -21.034668
325.0433 -26.043335
330.0520 -31.052002
335.0607 -36.060669
340.0693 -41.069336
345.0780 -46.078003
350.0867 -51.086670
355.0953 -56.095337
Run Code Online (Sandbox Code Playgroud)
我试过了
Data2 <- df %>%
mutate(reflectance = replace(reflectance,wavelength %in% badData, NA))
Run Code Online (Sandbox Code Playgroud)
但是因为我试图用波长范围而不是精确值来做这个,所以这不起作用.我在想我应该使用条件语句,但我不知道如何通过最有效的方式提供具有不同范围分组的向量.
输出数据集将是因为波长300.000和305.0087落在296和310之间,波长330.05620介于330和335和350.0867之间,355.0953介于350:565之间.
wavelength reflectance
300.0000 NA
305.0087 NA
310.0173 -11.017334
315.0260 -16.026001
320.0347 -21.034668
325.0433 -26.043335
330.0520 NA
335.0607 -36.060669
340.0693 -41.069336
345.0780 -46.078003
350.0867 NA …Run Code Online (Sandbox Code Playgroud)