基于带有空格的部分字符串进行变异

问题描述 投票:0回答:1

在下面的字符串中,我只想提取与“Left”和“Right”匹配的值,并使用

mutate()
排除其余部分。假设我有一个数据集
data
,其中有一列名为
string

library(tidyverse)

data$string <- c("Left A", "Left Middle A", "Middle A", "Right Middle A", "Right A")

data1 <- data %>%
  mutate(Location = ifelse(gsub("\\bLeft\\b", string) | gsub("\\bRight\\b", string),
                           "Out",
                           "In"))

但是由于空格的原因,它会返回字符串中包含“Left”和“Right”的所有内容。我怎样才能让它认识到我只希望它匹配第一个单词而不是后面的任何内容?

r string tidyverse
1个回答
0
投票

类似这样的:

library(dplyr)

data %>%
  mutate(Location = if_else(grepl("^(Left|Right)( |$)", string), "Out", "In"))

     string Location
1         Left A      Out
2  Left Middle A      Out
3       Middle A       In
4 Right Middle A      Out
5        Right A      Out
© www.soinside.com 2019 - 2024. All rights reserved.