小编Chr*_*Ade的帖子

根据有条件地匹配另一列的向量替换一列中的值

我有以下数据框,并且我想用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)

conditional replace r dplyr mutate

1
推荐指数
1
解决办法
741
查看次数

标签 统计

conditional ×1

dplyr ×1

mutate ×1

r ×1

replace ×1