- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个字符变量,它有一些我想用 NA 替换的值(例如“N/A”;“NA”作为文本输入,而不是 R 的 NA 类型;其他文本响应。)我不想要的值替换为 NA 包含数字字符串,因此我尝试使用正则表达式来选择要替换为 NA 的非数字字符串。
我可以使用以下内容过滤非数字大小写,或者如果我删除“!”,则可以过滤数字字符串大小写。我无法弄清楚如何将 mutate() 与 if_else() 和 str_detect() 或 na_if() 与 str_detect() 一起使用来替换这些情况。如果我用 na_if() 准确指定它们,我只能替换它们。
library(dplyr)
library(stringr)
df <- data.frame(var1 = c("84950", "NA", "N/A", "84596/03456", "55555", NA),
var2 = rep("10000", 6))
df %>%
filter(!str_detect(var1, "[:digit:]"))
这行不通。
df %>%
mutate(var1 = if_else(str_detect(var1, "[:digit:]"), var1, NA))
这行不通,所有情况保持原样。
df %>%
mutate(var1 = na_if(var1, !str_detect(var1, "[:digit:]")))
这用于替换这个特定值“N/A”
df %>%
mutate(var1 = na_if(var1, "N/A"))
最佳答案
您的第二种方法很接近。您需要指定 NA
是字符类型。
df |>
mutate(var1 = if_else(str_detect(var1, "[:digit:]"), var1, NA_character_))
输出:
var1 var2
1 84950 10000
2 <NA> 10000
3 <NA> 10000
4 84596/03456 10000
5 55555 10000
6 <NA> 10000
关于r - 如何用 NA、na_if、if_else、regex 替换某些字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72995834/
这个问题在这里已经有了答案: Mutate across with ifelse and is.na (4 个答案) 关闭去年。 社区在 去年 审查了是否重新打开这个问题并将其关闭: 原始关闭原因未
我有一个字符变量,它有一些我想用 NA 替换的值(例如“N/A”;“NA”作为文本输入,而不是 R 的 NA 类型;其他文本响应。)我不想要的值替换为 NA 包含数字字符串,因此我尝试使用正则表达式来
我正在尝试编写一个函数,该函数接受一个数据帧,从 chr 转换一列至 dbl ,然后将 1 添加到列中。我还想选择性地用 NA 替换某些值.否则,如果不使用相关参数,我希望函数跳过 NA 替换步骤。
我的数据采用以下格式: library(tidyverse) df % mutate(vs_doubled = vs * 2) %>% select(mpg, cyl, vs, am, vs_doub
我是一名优秀的程序员,十分优秀!