在R中,根据相邻列中字符的匹配情况,将值替换为NA

在R中,根据相邻列中字符的匹配情况,将值替换为NA,r,replace,R,Replace,我有一个带有测量数据(tmax,tmin)的数据框,如果在相邻列(qflag_tmax,qflag_tmin)的相应行中发现质量保证代码(“G”、“I”、“O”、“S”、“Z”、“T”),我想用NA替换该数据框 一个可复制的例子 set.seed(1234) df<-data.frame( id = 1:12, tmax=floor(runif(12,min=32, max=95)), tmin=floor(runif(12,min=0,max=32)), qflag_tm

我有一个带有测量数据(tmax,tmin)的数据框,如果在相邻列(qflag_tmax,qflag_tmin)的相应行中发现质量保证代码(“G”、“I”、“O”、“S”、“Z”、“T”),我想用NA替换该数据框

一个可复制的例子

set.seed(1234)
df<-data.frame(
  id = 1:12,
  tmax=floor(runif(12,min=32, max=95)),
  tmin=floor(runif(12,min=0,max=32)),
  qflag_tmax=sample(c("G","I","O","S","Z","","NA"),12, replace=TRUE),
  qflag_tmin=sample(c("G","I","O","S","T","","NA"),12, replace=TRUE),
               stringsAsFactors = F
)
set.seed(1234)

df
grepl
用于模式匹配,因为在这里您要执行精确匹配,请使用%
中的
%

df$tmax[df$qflag_tmax %in% c("G","I","O","S","Z","T")] <- NA

df$tmax[df$qflag\u tmax%在%c(“G”、“I”、“O”、“S”、“Z”、“T”)中]
grepl
用于模式匹配,因为这里您要执行精确匹配,请使用%
中的
%

df$tmax[df$qflag_tmax %in% c("G","I","O","S","Z","T")] <- NA

df$tmax[df$qflag\u tmax%c(“G”、“I”、“O”、“S”、“Z”、“T”)]我们可以使用
replace

 library(dplyr)
 df %>%
    mutate(tmax = replace(tmax, qflag_tmax %in% c("G","I","O","S","Z","T"), NA))
 

我们可以使用
替换

 library(dplyr)
 df %>%
    mutate(tmax = replace(tmax, qflag_tmax %in% c("G","I","O","S","Z","T"), NA))
 

非常感谢,这正是我需要的。非常感谢,这正是我需要的。