r - 替换字符串中除一个之外的所有单词的问题
问题描述
我有一个简单的问题:
我有一列包含数千个值,我正在尝试将其转换为二分变量(是|否)。用“否”替换字符串很容易,因为我要转换的值是一个星号
Data$Complete <- gsub("\\*", "No", Data$Complete)
但是,当我尝试替换除“否”之外的所有内容时,以下代码将字符串中的所有内容替换为“是”。我不明白为什么它会像我指定的那样替换除“否”之外的所有内容:
Data$Complete <- Data[!Data$Complete %in% c("No"), "Complete"] <- "Yes"
任何指针将不胜感激。
解决方案
您可以使用ifelse
功能组合并grepl
提取必要的数据,如下所示:
library(stringi)
# data simulation
set.seed(123)
n <- 1000
data <- data.frame(
complete = stri_rand_strings(n = n, length = 20, pattern = "[A-Za-z0-9\\*]")
)
# string matching
data$yes_no <- ifelse(grepl("\\*", data$complete), "No", "Yes")
head(data)
输出:
complete yes_no
1 HmOsw1WtXRxRfZ5tE1Jx Yes
2 tgdzehXaH8xtgn0TkCJD Yes
3 7PPM87DSFr1Qn6YC7ktM Yes
4 e4NGoRoonQkch*SCMbL6 No
5 EfPm5QztsA7eKeJAm4SV Yes
6 aJTxTtubO8vH2wi7XxZO Yes
推荐阅读
- spring-boot - 使用spring-boot 2在Junit中注入RabbitTemplate的问题
- javascript - 离散轴标签
- javascript - javascript中的XOR运算符与python中的XOR运算符不同
- rx-java - RxJava 将发出的值收集到数组
- sql - postgres 9.6 的合并和 case when 语句
- python - 嵌套的 tf.function 非常慢
- r - 固定长度向量的 R 包
- python - 生成具有连续值的变量
- tfs - 是否可以将 TFS 查询限制为前 100 个?
- c# - 为什么 .NET 不能检测具有长文件路径的目录?