Ber*_*d G 1 replace r wildcard dataframe na
我有一个像这样的数据框 df
| 第 1 列 | 第2栏 | 第3栏 |
|---|---|---|
| 1 | 2 | 5 |
| 6 | x1A | 9 |
| 8 | x3 | 7 |
| 5 | 3 | x4Z |
我想替换所有以 开头的X值NA。结果应该是
| 第 1 列 | 第2栏 | 第3栏 |
|---|---|---|
| 1 | 2 | 5 |
| 6 | 不适用 | 9 |
| 8 | 不适用 | 7 |
| 5 | 3 | 不适用 |
我尝试了不同的解决方案但没有成功:
df[-grep(pattern = "X^",df),]
df %>% mutate_all(~na_if(.,"X*"))
df%>% mutate_all(~na_if(.,matches("X*")))
df %>% mutate_all(~na_if(.,glob2rx("X*")))
Run Code Online (Sandbox Code Playgroud)
使用as.numeric会自动将以“X”开头的任何内容转换为NA,同时将其他所有内容转换为数字。唯一的缺点是解析失败时会发出警告,因此一个(安静的)单行 tidyverse 解决方案是:
df %>% mutate(across(everything(), ~suppressWarnings(as.numeric(.x))))
#> Col1 Col2 Col3
#> 1 1 2 5
#> 2 6 NA 9
#> 3 8 NA 7
#> 4 5 3 4
Run Code Online (Sandbox Code Playgroud)
创建于 2023-09-29,使用reprex v2.0.2