[R] Replace values based on neither condition

Rui Barradas ru|pb@rr@d@@ @end|ng |rom @@po@pt
Fri Oct 28 11:53:24 CEST 2022


Às 10:43 de 28/10/2022, Luigi Marongiu escreveu:
> Hello,
> I have a data frame with a string column. All data that are neither
> "POS" nor "NEG" should've replaced by an NA. How can I implement that
> (even with extra libraries)? My attempts actually wipe out POS and
> NEG...
> Thank you
> 
> ```
> df = data.frame(a = 1:5, b = c("",      "31.35", "POS",   "20.61", "NEG"),
>                  stringsAsFactors = F)
> df$b[!(df$b == "POS") & (df$b == "NEG")] = NA
> df$b[(df$b == "POS") | (df$b == "NEG")] = NA
> ```
> 

Hello,

Here is a way.
Use `%in%` to get the values equal to either "POS" or "NEG", negate its 
result and function `is.na<-` assigns NA's.


df = data.frame(a = 1:5, b = c("", "31.35", "POS", "20.61", "NEG"),
                 stringsAsFactors = FALSE)

is.na(df$b) <- !df$b %in% c("POS", "NEG")
df
#>   a    b
#> 1 1 <NA>
#> 2 2 <NA>
#> 3 3  POS
#> 4 4 <NA>
#> 5 5  NEG


Hope this helps,

Rui Barradas



More information about the R-help mailing list