À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

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to